Skip to content

JoshWorld/gcamp_ros2_basic

 
 

Repository files navigation

GCamp ROS 2 Basic

ROS 2 Basics with Gazebo Simulations

Feel Free to use this repo as an template code 😀

News

There's Lecture note for all codes, all packages (Written in Korean)

Repo Structure

├── cpp_first_pkg
├── cpp_topic_pkg
├── cpp_service_pkg
├── cpp_action_pkg
├── py_first_pkg
├── py_topic_pkg
├── py_service_pkg
├── py_action_pkg
├── custom_interfaces
├── gcamp_gazebo
└── image
  • gcamp_gazebo : Gazeobo Package with Worlds and Robot.
  • cpp_<sth>_pkg : C++ ROS 2 packages for each ROS Communication Mechanisms
  • py_<sth>_pkg : Python ROS 2 packages for each ROS Communication Mechanisms
  • custom_interfaces : Package for custom ROS 2 communication interfaces

Examples - rclpy

Topic Examples

  • Available nodes and Execution commands
ros2 run py_topic_pkg cmd_vel_pub_node 
ros2 run py_topic_pkg laser_raw_node 
ros2 run py_topic_pkg laser_sub_node
ros2 run py_topic_pkg parking_node

Project - Parking

Use ROS 2 topic to park the robot correctly in the simulation.

  • LaserScan data Subscribe
  • Twist publish

Service Examples

  • Available nodes and Execution commands
ros2 run py_service_pkg gazebo_model_spawner
ros2 run py_service_pkg robot_turning_server
ros2 service call /turn_robot custom_interfaces/srv/TurningControl "{time_duration: 5, angular_vel_z: 1.0, linear_vel_x: 0.5}"
ros2 service call /delete_entity gazebo_msgs/srv/DeleteEntity "{name: 'skidbot'}"
ros2 run py_service_pkg robot_turning_client

Project - Spawn Cloned Robot

Use ROS 2 service to bring a robot into the simulation.

  • ROS Gazebo Service
  • Service Client
  • URDF

Action Examples

  • Available nodes and Execution commands
ros2 run py_action_pkg fibonacci_action_server 
ros2 run py_action_pkg fibonacci_action_client 
ros2 run py_action_pkg fibonacci_action_server_cancel 
ros2 run py_action_pkg fibonacci_action_client_cancel

ros2 action send_goal fibonacci custom_interfaces/action/Fibonacci "{order: 5}"
ros2 action send_goal --feedback fibonacci custom_interfaces/action/Fibonacci "{order: 5}"

ros2 run image_view image_view --ros-args --remap /image:=/diffbot/camera_sensor/image_raw
ros2 run py_action_pkg img_subscriber_node 
ros2 run py_action_pkg odom_sub_node 
ros2 run py_action_pkg robot_controller
ros2 run py_action_pkg maze_action_server
ros2 run py_action_pkg maze_action_client
ros2 action send_goal --feedback maze_action custom_interfaces/action/Maze "{turning_sequence: [2,1,0,1,2]}"

Project - Maze Escape

Use ROS 2 action to get the robot out of the maze.

  • Action Client & Server
  • ROS 2 odometry
  • OpenCV

Theory - Robot Dynamics

  • Make skid_drive robot and differential_drive robot with URDF, and make them moving in Gazebo Environment.
  • Check difference btw them

Update & TODO

  • Upload Youtube lectures

Contributor

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 57.3%
  • C++ 34.9%
  • CMake 7.8%