Code Monkey home page Code Monkey logo

megarover-ros2's Introduction

ハードウェア

  1. 車体: メガローバー ver3.0
  2. PC: Jetson AGX Orin
  3. Lidar: Livox Mid360
  4. カメラ: Realsense D455
  5. DCDCコンバータ: YDS-812

ソフトウェア

  1. clone submoduleごとclone
git clone --recursive https://github.com/YasuChiba/megarover-ros2.git
  1. build
cd workspace
colcon build
colcon build --cmake-args -DBUILD_TESTING=OFF
source install/setup.sh
pip3 install transforms3d
  1. run

ホスト側で下記を実行

`xhost +local:` 
sudo chmod 777 /dev/video* 

必要に応じて以下をコンテナ内で実行

ros2 launch c_megarover msg_MID360_launch.py
ros2 launch c_megarover create_3dmap_launch.py rviz:=true
ros2 launch c_megarover create_2dmap_launch.py simulator:=false rviz:=false
ros2 launch c_megarover create_3dmap_rosbag_launch.py  rviz:=true rosbag_path:=/home/user/workspace/rosbag/rosbag2_2024_04_09-03_27_26
ros2 launch c_megarover create_3dmap_rosbag_launch.py  rviz:=true rosbag_path:=/home/user/workspace/rosbag/rosbag2_2024_04_10-01_35_06/ | grep -v "Failed to find match for fiel"

micro ros agentの開始.これを実行することで、車体側とROS2経由で通信が出来るようになる。
dockerコンテナをUSB接続前から立ち上げていると制御基板がコンテナ内から見えないかも.
permissionで怒られたらsudo chmod 666 /dev/ttyUSB0を実行。

ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 --baudrate 115200

見えるトピックは以下のはず

  • /rover_odo
  • /rover_sensor
  • /rover_twist
  1. record/play

    ros2 bag record -a
    ros2 bag play hoge
    
  2. export pcd SLAMの結果の点群を、rosbagから取り出すには....

    ros2 run c_megarover_common pointcloud_to_pcd_node --ros-args -r input:=/Laser_map
    

3d and 2d map creation

  1. record
    start_recording.shをコンテナ外から実行。もしくはコンテナ内でros2 launch c_megarover record_all_launch.py simulator:=false rviz:=trueを実行。 workspace/rosbagにデータが格納。
  2. slam
    1. 以下の2つをそれぞれ同時に実行
      • ros2 launch c_megarover create_3dmap_launch_rosbag.py
      • ros2 bag play rosbag/rosbag_2024-xxxx/ --topics /livox/imu /livox/lidar
    2. マッピングの終盤に以下を実行
      • ros2 run c_megarover_common pointcloud_to_pcd_node --ros-args -p prefix:=/home/user/workspace/pcd/ -r input:=/Laser_map
    3. pcdファイルが出力されたあとに以下を実行
      • ros2 run c_megarover_common pcd_to_occupancygrid_tool --ros-args -p pcd_file_path:=/home/user/workspace/pcd/1713279228.582533121.pcd -p output_file_path:=/home/user/workspace/maps/map2
      • ros2 run c_megarover_common pcd_to_occupancygrid_tool --ros-args -p pcd_file_path:=/home/user/workspace/maps/map2.pcd -p output_file_path:=/home/user/workspace/maps/map2 -p thres_point_count:=2

2D navigation

コンテナ外でstart_2d_navigation.shを実行. 参照する地図を変える場合workspace/container_entrypoints/start_2d_navigation.shを編集。

memo

Localization

  1. run
    ros2 launch c_megarover 3d_localization_launch.py simulator:=true rviz:=true map_file_path:=/home/user/workspace/pcd/sendagi.pcd
    
    ros2 bag play rosbag/rosbag2_2024_04_12-03_10_57/ --topics /livox/lidar /livox/imu --clock
    
    --clock is required when the simulator:=true.

Navigation

  1. run

    ros2 launch c_megarover navigation_launch.py simulator:=true rviz:=false map_file_path:=/home/user/workspace/maps/sendagi.pcd map_2d_file_path:=/home/user/workspace/maps/sendagi.yaml
    
    ros2 bag play rosbag/rosbag2_2024_04_12-03_10_57/ --topic /livox/imu /livox/lidar /rover_odo --clock
    
  2. run(2d)

    ros2 launch c_megarover 2d_localization_launch.py simulator:=true rviz:=true map_file_path:=/home/user/workspace/maps/sendagi.pcd map_2d_file_path:=/home/user/workspace/maps/sendagi.yaml
    

memo

slam_toolbox

slam_toolboxはodomが必須なので、create_2dmap_launch.pyはodomがある環境で試す。

using realsense with jetson

(maybe) need to run ./setup_udev_rules.sh in librealsense2 on the host machine
ros2 launch realsense2_camera rs_launch.py initial_reset:=true
colcon build --cmake-args '-DBUILD_ACCELERATE_GPU_WITH_GLSL=ON'

ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap cmd_vel:=/rover_twist

sudo apt-get install ros-humble-teleop-twist-keyboard

megarover-ros2's People

Contributors

yasuchiba avatar

Stargazers

Xinyang avatar Matts966 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.