├── .gitignore
├── README.md
└── src
├── dynamixelsdk
├── .travis.yml
├── CONTRIBUTING.md
├── Doxyfile
├── LICENSE
├── README.md
└── dynamixel_sdk
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── include
│ └── dynamixel_sdk
│ │ ├── dynamixel_sdk.h
│ │ ├── group_bulk_read.h
│ │ ├── group_bulk_write.h
│ │ ├── group_sync_read.h
│ │ ├── group_sync_write.h
│ │ ├── packet_handler.h
│ │ ├── port_handler.h
│ │ ├── port_handler_arduino.h
│ │ ├── port_handler_linux.h
│ │ ├── port_handler_mac.h
│ │ ├── port_handler_windows.h
│ │ ├── protocol1_packet_handler.h
│ │ └── protocol2_packet_handler.h
│ ├── package.xml
│ └── src
│ ├── DynamixelSDK.h
│ └── dynamixel_sdk
│ ├── group_bulk_read.cpp
│ ├── group_bulk_write.cpp
│ ├── group_sync_read.cpp
│ ├── group_sync_write.cpp
│ ├── packet_handler.cpp
│ ├── port_handler.cpp
│ ├── port_handler_arduino.cpp
│ ├── port_handler_linux.cpp
│ ├── port_handler_mac.cpp
│ ├── port_handler_windows.cpp
│ ├── protocol1_packet_handler.cpp
│ └── protocol2_packet_handler.cpp
├── imu_tools
├── .travis.yml
├── Dockerfile-eloquent
├── README.md
├── imu_complementary_filter
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── COLCON_IGNORE
│ ├── include
│ │ └── imu_complementary_filter
│ │ │ ├── complementary_filter.h
│ │ │ └── complementary_filter_ros.h
│ ├── launch
│ │ └── complementary_filter.launch
│ ├── package.xml
│ └── src
│ │ ├── complementary_filter.cpp
│ │ ├── complementary_filter_node.cpp
│ │ └── complementary_filter_ros.cpp
├── imu_filter_madgwick
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── COPYING
│ ├── config
│ │ └── imu_filter.yaml
│ ├── include
│ │ └── imu_filter_madgwick
│ │ │ ├── base_node.hpp
│ │ │ ├── imu_filter.h
│ │ │ ├── imu_filter_ros.h
│ │ │ ├── stateless_orientation.h
│ │ │ └── world_frame.h
│ ├── launch
│ │ ├── imu_filter.launch.py
│ │ └── imu_filter_component.launch.py
│ ├── package.xml
│ ├── sample
│ │ ├── ardrone_imu.bag
│ │ ├── phidgets_imu_upside_down.bag
│ │ └── sparkfun_razor.bag
│ ├── src
│ │ ├── imu_filter.cpp
│ │ ├── imu_filter_node.cpp
│ │ ├── imu_filter_ros.cpp
│ │ └── stateless_orientation.cpp
│ └── test
│ │ ├── CMakeLists.txt
│ │ ├── madgwick_test.cpp
│ │ ├── stateless_orientation_test.cpp
│ │ └── test_helpers.h
├── imu_tools
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ └── package.xml
└── rviz_imu_plugin
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── package.xml
│ ├── plugin_description.xml
│ ├── rosdoc.yaml
│ ├── rviz_imu_plugin.png
│ └── src
│ ├── imu_acc_visual.cpp
│ ├── imu_acc_visual.h
│ ├── imu_axes_visual.cpp
│ ├── imu_axes_visual.h
│ ├── imu_display.cpp
│ ├── imu_display.h
│ ├── imu_orientation_visual.cpp
│ ├── imu_orientation_visual.h
│ ├── mag_display.cpp
│ ├── mag_display.h
│ ├── mag_visual.cpp
│ └── mag_visual.h
├── robot_localization
├── .travis.yml
├── CHANGELOG.rst
├── CMakeLists.txt
├── LICENSE
├── README.md
├── doc
│ ├── .templates
│ │ └── full_globaltoc.html
│ ├── CHANGELOG.rst
│ ├── Makefile
│ ├── conf.py
│ ├── configuring_robot_localization.rst
│ ├── images
│ │ ├── figure1.png
│ │ └── rl_small.png
│ ├── index.rst
│ ├── integrating_gps.rst
│ ├── manifest.yaml
│ ├── migrating_from_robot_pose_ekf.rst
│ ├── navsat_transform_node.rst
│ ├── preparing_sensor_data.rst
│ ├── robot_localization_ias13_revised.pdf
│ └── state_estimation_nodes.rst
├── include
│ └── robot_localization
│ │ ├── ekf.hpp
│ │ ├── filter_base.hpp
│ │ ├── filter_common.hpp
│ │ ├── filter_state.hpp
│ │ ├── filter_utilities.hpp
│ │ ├── measurement.hpp
│ │ ├── navsat_conversions.hpp
│ │ ├── navsat_transform.hpp
│ │ ├── robot_localization_estimator.hpp
│ │ ├── ros_filter.hpp
│ │ ├── ros_filter_types.hpp
│ │ ├── ros_filter_utilities.hpp
│ │ ├── ros_robot_localization_listener.hpp
│ │ └── ukf.hpp
├── launch
│ ├── dual_ekf_navsat_example_simulation.launch.py
│ ├── ekf.launch.py
│ ├── ekf_global.launch.py
│ ├── navsat_transform.launch.py
│ └── ukf.launch.py
├── package.xml
├── params
│ ├── dual_ekf_navsat_example.yaml
│ ├── ekf.yaml
│ ├── navsat_transform.yaml
│ └── ukf.yaml
├── rosdoc.yaml
├── src
│ ├── ekf.cpp
│ ├── ekf_node.cpp
│ ├── filter_base.cpp
│ ├── filter_utilities.cpp
│ ├── navsat_transform.cpp
│ ├── navsat_transform_node.cpp
│ ├── robot_localization_estimator.cpp
│ ├── robot_localization_listener_node.cpp
│ ├── ros_filter.cpp
│ ├── ros_filter_utilities.cpp
│ ├── ros_robot_localization_listener.cpp
│ ├── ukf.cpp
│ └── ukf_node.cpp
├── srv
│ ├── FromLL.srv
│ ├── GetState.srv
│ ├── SetDatum.srv
│ ├── SetPose.srv
│ ├── ToLL.srv
│ └── ToggleFilterProcessing.srv
└── test
│ ├── test1.bag
│ ├── test2.bag
│ ├── test3.bag
│ ├── test_ekf.cpp
│ ├── test_ekf_localization_node_bag1.launch.py
│ ├── test_ekf_localization_node_bag1.sh
│ ├── test_ekf_localization_node_bag1.yaml
│ ├── test_ekf_localization_node_bag2.launch.py
│ ├── test_ekf_localization_node_bag2.sh
│ ├── test_ekf_localization_node_bag2.yaml
│ ├── test_ekf_localization_node_bag3.launch.py
│ ├── test_ekf_localization_node_bag3.sh
│ ├── test_ekf_localization_node_bag3.yaml
│ ├── test_ekf_localization_node_interfaces.cpp
│ ├── test_ekf_localization_node_interfaces.launch.py
│ ├── test_ekf_localization_node_interfaces.yaml
│ ├── test_filter_base.cpp
│ ├── test_filter_base_diagnostics_timestamps.cpp
│ ├── test_filter_base_diagnostics_timestamps.launch.py
│ ├── test_filter_base_diagnostics_timestamps.yaml
│ ├── test_localization_node_bag_pose_tester.cpp
│ ├── test_robot_localization_estimator.cpp
│ ├── test_robot_localization_estimator.launch.py
│ ├── test_ros_robot_localization_listener.cpp
│ ├── test_ros_robot_localization_listener.launch.py
│ ├── test_ros_robot_localization_listener.yaml
│ ├── test_ros_robot_localization_listener_publisher.cpp
│ ├── test_ukf.cpp
│ ├── test_ukf_localization_node_bag1.launch.py
│ ├── test_ukf_localization_node_bag1.sh
│ ├── test_ukf_localization_node_bag1.yaml
│ ├── test_ukf_localization_node_bag2.launch.py
│ ├── test_ukf_localization_node_bag2.sh
│ ├── test_ukf_localization_node_bag2.yaml
│ ├── test_ukf_localization_node_bag3.launch.py
│ ├── test_ukf_localization_node_bag3.sh
│ ├── test_ukf_localization_node_bag3.yaml
│ ├── test_ukf_localization_node_interfaces.cpp
│ ├── test_ukf_localization_node_interfaces.launch.py
│ └── test_ukf_localization_node_interfaces.yaml
├── turtlebot3
├── .travis.yml
├── CONTRIBUTING.md
├── ISSUE_TEMPLATE.md
├── LICENSE
├── README.md
├── turtlebot3.repos
├── turtlebot3
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ └── package.xml
├── turtlebot3_bringup
│ ├── 99-turtlebot3-cdc.rules
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── launch
│ │ ├── robot.launch.py
│ │ ├── rviz2.launch.py
│ │ └── turtlebot3_state_publisher.launch.py
│ ├── package.xml
│ └── param
│ │ ├── burger.yaml
│ │ ├── waffle.yaml
│ │ └── waffle_pi.yaml
├── turtlebot3_cartographer
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── config
│ │ └── turtlebot3_lds_2d.lua
│ ├── launch
│ │ ├── cartographer.launch.py
│ │ └── occupancy_grid.launch.py
│ ├── package.xml
│ └── rviz
│ │ └── tb3_cartographer.rviz
├── turtlebot3_ci.repos
├── turtlebot3_description
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── meshes
│ │ ├── bases
│ │ │ ├── burger_base.stl
│ │ │ ├── waffle_base.stl
│ │ │ └── waffle_pi_base.stl
│ │ ├── sensors
│ │ │ ├── astra.dae
│ │ │ ├── astra.jpg
│ │ │ ├── lds.stl
│ │ │ ├── r200.dae
│ │ │ └── r200.jpg
│ │ └── wheels
│ │ │ ├── left_tire.stl
│ │ │ └── right_tire.stl
│ ├── package.xml
│ ├── rviz
│ │ └── model.rviz
│ └── urdf
│ │ ├── common_properties.urdf
│ │ ├── turtlebot3_burger.urdf
│ │ ├── turtlebot3_waffle.urdf
│ │ └── turtlebot3_waffle_pi.urdf
├── turtlebot3_example
│ ├── CHANGELOG.rst
│ ├── package.xml
│ ├── resource
│ │ └── turtlebot3_example
│ ├── setup.cfg
│ ├── setup.py
│ └── turtlebot3_example
│ │ ├── __init__.py
│ │ ├── turtlebot3_obstacle_detection
│ │ ├── __init__.py
│ │ ├── main.py
│ │ └── turtlebot3_obstacle_detection.py
│ │ ├── turtlebot3_patrol_client
│ │ ├── __init__.py
│ │ ├── main.py
│ │ └── turtlebot3_patrol_client.py
│ │ ├── turtlebot3_patrol_server
│ │ ├── __init__.py
│ │ ├── main.py
│ │ ├── turtlebot3_path.py
│ │ └── turtlebot3_patrol_server.py
│ │ └── turtlebot3_position_control
│ │ ├── __init__.py
│ │ ├── main.py
│ │ ├── turtlebot3_path.py
│ │ └── turtlebot3_position_control.py
├── turtlebot3_navigation2
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── launch
│ │ └── navigation2.launch.py
│ ├── map
│ │ ├── turtlebot3_world.pgm
│ │ └── turtlebot3_world.yaml
│ ├── package.xml
│ ├── param
│ │ ├── burger.yaml
│ │ ├── waffle.yaml
│ │ └── waffle_pi.yaml
│ └── rviz
│ │ └── tb3_navigation2.rviz
├── turtlebot3_node
│ ├── CHANGELOG.rst
│ ├── CMakeLists.txt
│ ├── include
│ │ └── turtlebot3_node
│ │ │ ├── control_table.hpp
│ │ │ ├── devices
│ │ │ ├── devices.hpp
│ │ │ ├── motor_power.hpp
│ │ │ ├── reset.hpp
│ │ │ └── sound.hpp
│ │ │ ├── diff_drive_controller.hpp
│ │ │ ├── dynamixel_sdk_wrapper.hpp
│ │ │ ├── odometry.hpp
│ │ │ ├── sensors
│ │ │ ├── battery_state.hpp
│ │ │ ├── imu.hpp
│ │ │ ├── joint_state.hpp
│ │ │ ├── sensor_state.hpp
│ │ │ └── sensors.hpp
│ │ │ └── turtlebot3.hpp
│ ├── package.xml
│ ├── param
│ │ ├── burger.yaml
│ │ ├── waffle.yaml
│ │ └── waffle_pi.yaml
│ └── src
│ │ ├── devices
│ │ ├── motor_power.cpp
│ │ ├── reset.cpp
│ │ └── sound.cpp
│ │ ├── diff_drive_controller.cpp
│ │ ├── dynamixel_sdk_wrapper.cpp
│ │ ├── node_main.cpp
│ │ ├── odometry.cpp
│ │ ├── sensors
│ │ ├── battery_state.cpp
│ │ ├── imu.cpp
│ │ ├── joint_state.cpp
│ │ └── sensor_state.cpp
│ │ └── turtlebot3.cpp
└── turtlebot3_teleop
│ ├── CHANGELOG.rst
│ ├── package.xml
│ ├── resource
│ └── turtlebot3_teleop
│ ├── setup.cfg
│ ├── setup.py
│ └── turtlebot3_teleop
│ ├── __init__.py
│ ├── __pycache__
│ └── __init__.cpython-38.pyc
│ └── script
│ ├── __init__.py
│ ├── __pycache__
│ ├── __init__.cpython-38.pyc
│ └── teleop_keyboard.cpython-38.pyc
│ └── teleop_keyboard.py
├── turtlebot3_msgs
├── .travis.yml
├── CHANGELOG.rst
├── CMakeLists.txt
├── LICENSE
├── README.md
├── action
│ └── Patrol.action
├── msg
│ ├── SensorState.msg
│ ├── Sound.msg
│ └── VersionInfo.msg
├── package.xml
└── srv
│ ├── Dqn.srv
│ └── Sound.srv
└── turtlebot3_simulations
├── .travis.yml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── turtlebot3_fake_node
├── CHANGELOG.rst
├── CMakeLists.txt
├── include
│ └── turtlebot3_fake_node
│ │ └── turtlebot3_fake_node.hpp
├── launch
│ ├── rviz2.launch.py
│ └── turtlebot3_fake_node.launch.py
├── package.xml
├── param
│ ├── burger.yaml
│ ├── waffle.yaml
│ └── waffle_pi.yaml
├── rviz
│ └── model.rviz
└── src
│ └── turtlebot3_fake_node.cpp
├── turtlebot3_gazebo
├── CHANGELOG.rst
├── CMakeLists.txt
├── include
│ └── turtlebot3_gazebo
│ │ └── turtlebot3_drive.hpp
├── launch
│ ├── empty_world.launch.py
│ ├── robot_state_publisher.launch.py
│ ├── turtlebot3_autorace.launch.py
│ ├── turtlebot3_dqn_stage1.launch.py
│ ├── turtlebot3_dqn_stage2.launch.py
│ ├── turtlebot3_dqn_stage3.launch.py
│ ├── turtlebot3_dqn_stage4.launch.py
│ ├── turtlebot3_house.launch.py
│ └── turtlebot3_world.launch.py
├── models
│ ├── turtlebot3_autorace
│ │ ├── course
│ │ │ ├── materials
│ │ │ │ ├── scripts
│ │ │ │ │ └── course.material
│ │ │ │ └── textures
│ │ │ │ │ └── course.png
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── ground
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── lights
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── model.config
│ │ ├── traffic_bar_down
│ │ │ ├── materials
│ │ │ │ ├── scripts
│ │ │ │ │ └── traffic_bar.material
│ │ │ │ └── textures
│ │ │ │ │ └── traffic_bar.png
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_bar_up
│ │ │ ├── materials
│ │ │ │ ├── scripts
│ │ │ │ │ └── traffic_bar.material
│ │ │ │ └── textures
│ │ │ │ │ └── traffic_bar.png
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_light_green
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_light_red
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_light_yellow
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_parking
│ │ │ ├── materials
│ │ │ │ ├── scripts
│ │ │ │ │ └── traffic_parking.material
│ │ │ │ └── textures
│ │ │ │ │ └── traffic_parking.png
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_stop
│ │ │ ├── materials
│ │ │ │ ├── scripts
│ │ │ │ │ └── traffic_stop.material
│ │ │ │ └── textures
│ │ │ │ │ └── traffic_stop.png
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── traffic_tunnel
│ │ │ ├── materials
│ │ │ │ ├── scripts
│ │ │ │ │ └── tunnel.material
│ │ │ │ └── textures
│ │ │ │ │ └── tunnel.png
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── tunnel_obstacles
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ └── tunnel_wall
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ ├── turtlebot3_burger
│ │ ├── meshes
│ │ │ ├── burger_base.dae
│ │ │ ├── lds.dae
│ │ │ └── tire.dae
│ │ ├── model-1_4.sdf
│ │ ├── model.config
│ │ └── model.sdf
│ ├── turtlebot3_dqn_world
│ │ ├── goal_box
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── inner_walls
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── model.config
│ │ ├── model.sdf
│ │ ├── obstacle1
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── obstacle2
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ │ ├── obstacle_plugin
│ │ │ ├── CMakeLists.txt
│ │ │ ├── build
│ │ │ │ ├── libobstacle1.so
│ │ │ │ ├── libobstacle2.so
│ │ │ │ └── libobstacles.so
│ │ │ ├── obstacle1.cc
│ │ │ ├── obstacle2.cc
│ │ │ └── obstacles.cc
│ │ └── obstacles
│ │ │ ├── model.config
│ │ │ └── model.sdf
│ ├── turtlebot3_house
│ │ ├── model.config
│ │ └── model.sdf
│ ├── turtlebot3_waffle
│ │ ├── meshes
│ │ │ ├── lds.dae
│ │ │ ├── r200.dae
│ │ │ ├── tire.dae
│ │ │ └── waffle_base.dae
│ │ ├── model.config
│ │ ├── model.sdf
│ │ └── model_old.sdf
│ ├── turtlebot3_waffle_pi
│ │ ├── meshes
│ │ │ ├── lds.dae
│ │ │ ├── tire.dae
│ │ │ └── waffle_pi_base.dae
│ │ ├── model-1_4_.sdf
│ │ ├── model.config
│ │ └── model.sdf
│ └── turtlebot3_world
│ │ ├── meshes
│ │ ├── hexagon.dae
│ │ └── wall.dae
│ │ ├── model-1_4.sdf
│ │ ├── model.config
│ │ └── model.sdf
├── package.xml
├── rviz
│ ├── tb3_gazebo.rviz
│ └── tb3_gazebo_robot_localization.rviz
├── src
│ └── turtlebot3_drive.cpp
└── worlds
│ ├── empty_worlds
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ ├── turtlebot3_autoraces
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ ├── turtlebot3_dqn_stage1
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ ├── turtlebot3_dqn_stage2
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ ├── turtlebot3_dqn_stage3
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ ├── turtlebot3_dqn_stage4
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ ├── turtlebot3_houses
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
│ └── turtlebot3_worlds
│ ├── burger.model
│ ├── waffle.model
│ └── waffle_pi.model
├── turtlebot3_simulations
├── CHANGELOG.rst
├── CMakeLists.txt
└── package.xml
└── turtlebot3_simulations_ci.repos
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode/
2 | build/
3 | log/
4 | install/
--------------------------------------------------------------------------------
/src/dynamixelsdk/.travis.yml:
--------------------------------------------------------------------------------
1 | services:
2 | - docker
3 |
4 | language:
5 | - generic
6 |
7 | notifications:
8 | email:
9 | on_success: change
10 | on_failure: always
11 | recipients:
12 | - willson@robotis.com
13 |
14 | branches:
15 | only:
16 | - ros2
17 | - ros2-devel
18 | - dashing-devel
19 | - eloquent-devel
20 | - foxy-devel
21 |
22 | install:
23 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci
24 |
25 | matrix:
26 | include:
27 | - script: .ros2ci/travis.bash dashing
28 | - script: .ros2ci/travis.bash eloquent
29 | - script: .ros2ci/travis.bash nightly
30 |
--------------------------------------------------------------------------------
/src/dynamixelsdk/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Thank you very much for your every contributions!
2 |
3 | I'm very glad to see so many changes and advances from the earlier SDK.
4 |
5 | While getting lots of information from you, the entire network in repo doesn't seem very clear
6 | so the work was very hard to be carried out so far.
7 |
8 | Hence, I will update some GUIDELINES that is very necessary to get your ideas be MERGED.
9 |
10 | 1. After every release, there is a 'develop' branch. To make your idea be accepted on the next release,
11 | YOU SHOULD GET PULL REQUEST BASED ON THE 'DEVELOP' BRANCH, NOT THE 'MASTER' BRANCH!!
12 | All pull requests based on 'master' branch will be 'suspended' or 'won't fix', so make sure before the pull request.
13 |
14 | 2. I'm hoping that many users can list up on the [CONTRIBUTORS](https://github.com/ROBOTIS-GIT/DynamixelSDK/graphs/contributors).
15 | Seriously, I don't want to get your idea as my name but as your name. However, if your idea is left as based on 'develop branch' or idle,
16 | I can't do anything but upload your idea as my name.
17 |
18 | Thank you every time again, and let's make the source better to get many users happy while make Dynamixel applications.
19 |
20 | 2017.12.01 doc ver 1.0.1
21 |
--------------------------------------------------------------------------------
/src/dynamixelsdk/dynamixel_sdk/include/dynamixel_sdk/dynamixel_sdk.h:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2017 ROBOTIS CO., LTD.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *******************************************************************************/
16 |
17 | ////////////////////////////////////////////////////////////////////////////////
18 | /// @file The file that includes whole Dynamixel SDK libraries
19 | /// @author Zerom, Leon (RyuWoon Jung)
20 | ////////////////////////////////////////////////////////////////////////////////
21 |
22 | #ifndef DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_DYNAMIXELSDK_H_
23 | #define DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_DYNAMIXELSDK_H_
24 |
25 |
26 | #include "group_bulk_read.h"
27 | #include "group_bulk_write.h"
28 | #include "group_sync_read.h"
29 | #include "group_sync_write.h"
30 | #include "packet_handler.h"
31 | #include "port_handler.h"
32 |
33 |
34 | #endif /* DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_DYNAMIXELSDK_H_ */
35 |
--------------------------------------------------------------------------------
/src/dynamixelsdk/dynamixel_sdk/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | dynamixel_sdk
5 | 3.7.30
6 |
7 | This package is wrapping version of ROBOTIS Dynamixel SDK for ROS 2. The ROBOTIS Dynamixel SDK, or SDK, is a software development library that provides Dynamixel control functions for packet communication. The API is designed for Dynamixel actuators and Dynamixel-based platforms.
8 |
9 | Apache 2.0
10 | Pyo
11 | Darby Lim
12 | Zerom
13 | Leon
14 | Will Son
15 | http://wiki.ros.org/dynamixel_sdk
16 | http://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/overview/
17 | https://github.com/ROBOTIS-GIT/DynamixelSDK
18 | https://github.com/ROBOTIS-GIT/DynamixelSDK/issues
19 | ament_cmake
20 |
21 | ament_cmake
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/dynamixelsdk/dynamixel_sdk/src/DynamixelSDK.h:
--------------------------------------------------------------------------------
1 | #include "../include/dynamixel_sdk/dynamixel_sdk.h"
2 |
--------------------------------------------------------------------------------
/src/dynamixelsdk/dynamixel_sdk/src/dynamixel_sdk/port_handler.cpp:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2017 ROBOTIS CO., LTD.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | *******************************************************************************/
16 |
17 | /* Author: zerom, Ryu Woon Jung (Leon) */
18 |
19 | #if defined(__linux__)
20 | #include "port_handler.h"
21 | #include "port_handler_linux.h"
22 | #elif defined(__APPLE__)
23 | #include "port_handler.h"
24 | #include "port_handler_mac.h"
25 | #elif defined(_WIN32) || defined(_WIN64)
26 | #define WINDLLEXPORT
27 | #include "port_handler.h"
28 | #include "port_handler_windows.h"
29 | #elif defined(ARDUINO) || defined(__OPENCR__) || defined(__OPENCM904__)
30 | #include "../../include/dynamixel_sdk/port_handler.h"
31 | #include "../../include/dynamixel_sdk/port_handler_arduino.h"
32 | #endif
33 |
34 | using namespace dynamixel;
35 |
36 | PortHandler *PortHandler::getPortHandler(const char *port_name)
37 | {
38 | #if defined(__linux__)
39 | return (PortHandler *)(new PortHandlerLinux(port_name));
40 | #elif defined(__APPLE__)
41 | return (PortHandler *)(new PortHandlerMac(port_name));
42 | #elif defined(_WIN32) || defined(_WIN64)
43 | return (PortHandler *)(new PortHandlerWindows(port_name));
44 | #elif defined(ARDUINO) || defined(__OPENCR__) || defined(__OPENCM904__)
45 | return (PortHandler *)(new PortHandlerArduino(port_name));
46 | #endif
47 | }
48 |
--------------------------------------------------------------------------------
/src/imu_tools/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: required
2 |
3 | services:
4 | - docker
5 |
6 | env:
7 | matrix:
8 | - CI_ROS_DISTRO="eloquent"
9 |
10 | install:
11 | - docker build -t imu_tools_$CI_ROS_DISTRO -f Dockerfile-$CI_ROS_DISTRO .
12 |
13 | script:
14 | - docker run imu_tools_$CI_ROS_DISTRO /bin/bash -c "source install/setup.bash && colcon test && colcon test-result"
15 |
--------------------------------------------------------------------------------
/src/imu_tools/Dockerfile-eloquent:
--------------------------------------------------------------------------------
1 | FROM ros:eloquent-ros-core
2 |
3 | RUN apt-get update && apt-get install -y \
4 | build-essential clang-format python3-colcon-common-extensions python3-rosdep
5 |
6 | # Create ROS workspace
7 | COPY . /ws/src/imu_tools
8 | WORKDIR /ws
9 |
10 | # Use rosdep to install all dependencies (including ROS itself)
11 | RUN rosdep init && rosdep update && rosdep install --from-paths src -i -y --rosdistro eloquent
12 |
13 | RUN /bin/bash -c "source /opt/ros/eloquent/setup.bash && \
14 | colcon build --parallel-workers 1 && \
15 | colcon test --parallel-workers 1"
16 |
--------------------------------------------------------------------------------
/src/imu_tools/README.md:
--------------------------------------------------------------------------------
1 | IMU tools for ROS
2 | ===================================
3 |
4 | Overview
5 | -----------------------------------
6 |
7 | IMU-related filters and visualizers. The stack contains:
8 |
9 | * `imu_filter_madgwick`: a filter which fuses angular velocities,
10 | accelerations, and (optionally) magnetic readings from a generic IMU
11 | device into an orientation. Based on the work of [1].
12 |
13 | * `imu_complementary_filter`: a filter which fuses angular velocities,
14 | accelerations, and (optionally) magnetic readings from a generic IMU
15 | device into an orientation quaternion using a novel approach based on a complementary fusion. Based on the work of [2].
16 |
17 | * `rviz_imu_plugin` a plugin for rviz which displays `sensor_msgs::Imu`
18 | messages
19 |
20 | Installing
21 | -----------------------------------
22 |
23 | ### From source ###
24 |
25 | [Create a catkin workspace](http://wiki.ros.org/catkin/Tutorials/create_a_workspace)
26 | (e.g., `~/ros-hydro-ws/`) and source the `devel/setup.bash` file.
27 |
28 | Make sure you have git installed:
29 |
30 | sudo apt-get install git-core
31 |
32 | Download the stack from our repository into your catkin workspace (e.g.,
33 | `ros-hydro-ws/src`; use the proper branch for your distro, e.g., `groovy`,
34 | `hydro`...):
35 |
36 | git clone -b https://github.com/ccny-ros-pkg/imu_tools.git
37 |
38 | Install any dependencies using [rosdep](http://www.ros.org/wiki/rosdep).
39 |
40 | rosdep install imu_tools
41 |
42 | Compile the stack:
43 |
44 | cd ~/ros-hydro-ws
45 | catkin_make
46 |
47 | More info
48 | -----------------------------------
49 |
50 | http://wiki.ros.org/imu_tools
51 |
52 | License
53 | -----------------------------------
54 |
55 | * `imu_filter_madgwick`: currently licensed as GPL, following the original implementation
56 |
57 | * `imu_complementary_filter`: BSD
58 |
59 | * `rviz_imu_plugin`: BSD
60 |
61 | References
62 | -----------------------------------
63 | [1] http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/
64 |
65 | [2] http://www.mdpi.com/1424-8220/15/8/19302
66 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_complementary_filter/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5.1)
2 | project(imu_complementary_filter)
3 |
4 | find_package(Boost REQUIRED COMPONENTS thread)
5 |
6 | find_package(catkin REQUIRED COMPONENTS
7 | cmake_modules
8 | message_filters
9 | roscpp
10 | sensor_msgs
11 | std_msgs
12 | tf
13 | )
14 |
15 | catkin_package(
16 | INCLUDE_DIRS include
17 | LIBRARIES complementary_filter
18 | CATKIN_DEPENDS message_filters roscpp sensor_msgs std_msgs tf
19 | )
20 |
21 | include_directories(
22 | include
23 | ${catkin_INCLUDE_DIRS}
24 | ${Boost_INCLUDE_DIRS}
25 | )
26 |
27 | ## Declare a cpp library
28 | add_library(complementary_filter
29 | src/complementary_filter.cpp
30 | src/complementary_filter_ros.cpp
31 | include/imu_complementary_filter/complementary_filter.h
32 | include/imu_complementary_filter/complementary_filter_ros.h
33 | )
34 | target_link_libraries(complementary_filter ${catkin_LIBRARIES} ${Boost_LIBRARIES})
35 |
36 |
37 | # create complementary_filter_node executable
38 | add_executable(complementary_filter_node
39 | src/complementary_filter_node.cpp)
40 | target_link_libraries(complementary_filter_node complementary_filter ${catkin_LIBRARIES})
41 |
42 | install(TARGETS complementary_filter
43 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
44 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
45 | RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
46 | )
47 |
48 | install(TARGETS complementary_filter_node
49 | ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
50 | LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
51 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
52 | )
53 |
54 | ## Mark cpp header files for installation
55 | install(DIRECTORY include/${PROJECT_NAME}/
56 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
57 | FILES_MATCHING PATTERN "*.h"
58 | PATTERN ".svn" EXCLUDE
59 | )
60 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_complementary_filter/COLCON_IGNORE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_complementary_filter/COLCON_IGNORE
--------------------------------------------------------------------------------
/src/imu_tools/imu_complementary_filter/launch/complementary_filter.launch:
--------------------------------------------------------------------------------
1 |
2 |
3 | #### Nodelet manager ######################################################
4 |
5 |
7 |
8 | #### IMU Driver ###########################################################
9 |
10 |
13 |
14 | # supported data rates: 4 8 16 24 32 40 ... 1000 (in ms)
15 |
16 |
17 |
18 |
19 | #### Complementary filter
20 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_complementary_filter/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | imu_complementary_filter
4 | 1.2.2
5 | Filter which fuses angular velocities, accelerations, and (optionally) magnetic readings from a generic IMU device into a quaternion to represent the orientation of the device wrt the global frame. Based on the algorithm by Roberto G. Valenti etal. described in the paper "Keeping a Good Attitude: A Quaternion-Based Orientation Filter for IMUs and MARGs" available at http://www.mdpi.com/1424-8220/15/8/19302 .
6 |
7 | Roberto G. Valenti
8 | BSD
9 |
10 | http://www.mdpi.com/1424-8220/15/8/19302
11 | Roberto G. Valenti
12 |
13 | catkin
14 | cmake_modules
15 | message_filters
16 | roscpp
17 | sensor_msgs
18 | std_msgs
19 | tf
20 | message_filters
21 | roscpp
22 | sensor_msgs
23 | std_msgs
24 | tf
25 |
26 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5.1)
2 | project(imu_filter_madgwick)
3 |
4 | # Default to C++14
5 | if(NOT CMAKE_CXX_STANDARD)
6 | set(CMAKE_CXX_STANDARD 14)
7 | endif()
8 |
9 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
10 | add_compile_options(-Wall -Wextra -Wpedantic)
11 | endif()
12 |
13 | find_package(ament_cmake REQUIRED)
14 | find_package(rclcpp REQUIRED)
15 | find_package(rclcpp_components REQUIRED)
16 | find_package(std_msgs REQUIRED)
17 | find_package(geometry_msgs REQUIRED)
18 | find_package(tf2_geometry_msgs REQUIRED)
19 | find_package(tf2_ros REQUIRED)
20 | find_package(sensor_msgs REQUIRED)
21 |
22 | include_directories(include)
23 |
24 | add_library(imu_filter_madgwick SHARED
25 | src/imu_filter.cpp
26 | src/imu_filter_ros.cpp
27 | src/stateless_orientation.cpp)
28 | ament_target_dependencies(imu_filter_madgwick
29 | rclcpp
30 | rclcpp_components
31 | std_msgs
32 | sensor_msgs
33 | geometry_msgs
34 | tf2_geometry_msgs
35 | tf2_ros
36 | )
37 | rclcpp_components_register_nodes(imu_filter_madgwick "ImuFilterMadgwickRos")
38 |
39 | add_executable(imu_filter_madgwick_node src/imu_filter_node.cpp)
40 | target_link_libraries(imu_filter_madgwick_node imu_filter_madgwick)
41 | ament_target_dependencies(imu_filter_madgwick_node
42 | rclcpp)
43 |
44 | install(TARGETS
45 | imu_filter_madgwick
46 | ARCHIVE DESTINATION lib
47 | LIBRARY DESTINATION lib
48 | RUNTIME DESTINATION bin
49 | INCLUDES DESTINATION include
50 | )
51 |
52 | install(
53 | DIRECTORY include/
54 | DESTINATION include
55 | )
56 |
57 | install(TARGETS
58 | imu_filter_madgwick_node
59 | DESTINATION lib/${PROJECT_NAME})
60 |
61 | install(DIRECTORY
62 | launch config
63 | DESTINATION share/${PROJECT_NAME})
64 |
65 | if(BUILD_TESTING)
66 | find_package(ament_cmake_gtest REQUIRED)
67 | add_subdirectory(test)
68 | endif()
69 |
70 | ament_export_include_directories(include)
71 | ament_export_libraries(imu_filter_madgwick)
72 |
73 | ament_package()
74 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/config/imu_filter.yaml:
--------------------------------------------------------------------------------
1 | imu_filter:
2 | ros__parameters:
3 | stateless: false
4 | use_mag: true
5 | publish_tf: true
6 | reverse_tf: false
7 | fixed_frame: "odom"
8 | constant_dt: 0.0
9 | publish_debug_topics: false
10 | world_frame: "enu"
11 | gain: 0.1
12 | zeta: 0.0
13 | mag_bias_x: 0.0
14 | mag_bias_y: 0.0
15 | mag_bias_z: 0.0
16 | orientation_stddev: 0.0
17 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/include/imu_filter_madgwick/stateless_orientation.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010, CCNY Robotics Lab
3 | * Ivan Dryanovski
4 | *
5 | * http://robotics.ccny.cuny.edu
6 | *
7 | * Based on implementation of Madgwick's IMU and AHRS algorithms.
8 | * http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms
9 | *
10 | *
11 | * This program is free software: you can redistribute it and/or modify
12 | * it under the terms of the GNU General Public License as published by
13 | * the Free Software Foundation, either version 3 of the License, or
14 | * (at your option) any later version.
15 | *
16 | * This program is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 | * GNU General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU General Public License
22 | * along with this program. If not, see .
23 | */
24 |
25 | #ifndef IMU_FILTER_MADWICK_STATELESS_ORIENTATION_H
26 | #define IMU_FILTER_MADWICK_STATELESS_ORIENTATION_H
27 |
28 | #include
29 | #include
30 | #include
31 |
32 | class StatelessOrientation
33 | {
34 | public:
35 | static bool computeOrientation(
36 | WorldFrame::WorldFrame frame,
37 | geometry_msgs::msg::Vector3 acceleration,
38 | geometry_msgs::msg::Vector3 magneticField,
39 | geometry_msgs::msg::Quaternion& orientation);
40 |
41 | static bool computeOrientation(
42 | WorldFrame::WorldFrame frame,
43 | geometry_msgs::msg::Vector3 acceleration,
44 | geometry_msgs::msg::Quaternion& orientation);
45 |
46 | };
47 |
48 | #endif // IMU_FILTER_MADWICK_STATELESS_ORIENTATION_H
49 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/include/imu_filter_madgwick/world_frame.h:
--------------------------------------------------------------------------------
1 | #ifndef IMU_FILTER_MADGWICK_WORLD_FRAME_H_
2 | #define IMU_FILTER_MADGWICK_WORLD_FRAME_H_
3 |
4 | namespace WorldFrame {
5 | enum WorldFrame { ENU, NED, NWU };
6 | }
7 |
8 | #endif
9 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/launch/imu_filter.launch.py:
--------------------------------------------------------------------------------
1 | import os
2 | import launch
3 | import launch.actions
4 | import launch.substitutions
5 | import launch_ros.actions
6 | from ament_index_python.packages import get_package_share_directory
7 |
8 | def generate_launch_description():
9 |
10 | config_dir = os.path.join(
11 | get_package_share_directory('imu_filter_madgwick'), 'config')
12 |
13 | return launch.LaunchDescription([
14 | launch_ros.actions.Node(
15 | package='imu_filter_madgwick', node_executable='imu_filter_madgwick_node', node_name='imu_filter', output='screen',
16 | parameters=[os.path.join(config_dir, 'imu_filter.yaml')]
17 | )
18 | ])
19 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/launch/imu_filter_component.launch.py:
--------------------------------------------------------------------------------
1 | import os
2 | import launch
3 | import launch_ros.actions
4 | import launch.substitutions
5 | import yaml
6 |
7 | from launch_ros.actions import ComposableNodeContainer
8 | from launch_ros.descriptions import ComposableNode
9 | from ament_index_python.packages import get_package_share_directory
10 |
11 | def generate_launch_description():
12 |
13 | param_config = os.path.join(get_package_share_directory('imu_filter_madgwick'), 'config', 'imu_filter.yaml')
14 |
15 | # https://github.com/ros2/rclcpp/issues/715#issuecomment-490425249
16 | # Composable Nodes use different yaml parsing than a standalone node.
17 | # This code will load the parameters from the yaml (removing the namespace/nodename/ros__parameters heading) so
18 | # that the parameters are parsed and named properly for the composable node.
19 | with open(param_config, 'r') as f:
20 | params = yaml.safe_load(f)['imu_filter']['ros__parameters']
21 |
22 | container = ComposableNodeContainer(
23 | node_name='imu_filter_container',
24 | node_namespace='',
25 | package='rclcpp_components',
26 | node_executable='component_container',
27 | composable_node_descriptions=[
28 | ComposableNode(
29 | package='imu_filter_madgwick',
30 | node_plugin='ImuFilterMadgwickRos',
31 | node_name='imu_filter',
32 | parameters=[params]
33 | )
34 | ],
35 | output='screen'
36 | )
37 |
38 | return launch.LaunchDescription([
39 | container
40 | ])
41 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | imu_filter_madgwick
5 | 1.2.2
6 |
7 | Filter which fuses angular velocities, accelerations, and (optionally) magnetic readings from a generic IMU device into an orientation. Based on code by Sebastian Madgwick, http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms.
8 |
9 | GPL
10 | http://ros.org/wiki/imu_filter_madgwick
11 | Ivan Dryanovski
12 | Martin Günther
13 |
14 | ament_cmake
15 |
16 | rclcpp
17 | rclcpp_action
18 | rclcpp_lifecycle
19 | visualization_msgs
20 | nav_msgs
21 | geometry_msgs
22 | builtin_interfaces
23 | tf2_ros
24 | tf2_geometry_msgs
25 | sensor_msgs
26 |
27 | ament_lint_common
28 | ament_lint_auto
29 |
30 |
31 | ament_cmake
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/sample/ardrone_imu.bag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_filter_madgwick/sample/ardrone_imu.bag
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/sample/phidgets_imu_upside_down.bag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_filter_madgwick/sample/phidgets_imu_upside_down.bag
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/sample/sparkfun_razor.bag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/imu_filter_madgwick/sample/sparkfun_razor.bag
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/src/imu_filter_node.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010, CCNY Robotics Lab
3 | * Ivan Dryanovski
4 | *
5 | * http://robotics.ccny.cuny.edu
6 | *
7 | * Based on implementation of Madgwick's IMU and AHRS algorithms.
8 | * http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms
9 | *
10 | *
11 | * This program is free software: you can redistribute it and/or modify
12 | * it under the terms of the GNU General Public License as published by
13 | * the Free Software Foundation, either version 3 of the License, or
14 | * (at your option) any later version.
15 | *
16 | * This program is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 | * GNU General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU General Public License
22 | * along with this program. If not, see .
23 | */
24 | #include
25 |
26 | #include "imu_filter_madgwick/imu_filter_ros.h"
27 |
28 | int main(int argc, char *argv[]) {
29 | rclcpp::init(argc, argv);
30 |
31 | rclcpp::executors::SingleThreadedExecutor exec;
32 | rclcpp::NodeOptions options;
33 |
34 | auto node = std::make_shared(options);
35 | exec.add_node(node);
36 | exec.spin();
37 |
38 | rclcpp::shutdown();
39 |
40 | return 0;
41 | }
42 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_filter_madgwick/test/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ament_add_gtest(madgwick_test madgwick_test.cpp)
2 | target_link_libraries(madgwick_test imu_filter_madgwick)
3 |
4 | ament_add_gtest(stateless_orientation_test stateless_orientation_test.cpp)
5 | target_link_libraries(stateless_orientation_test imu_filter_madgwick)
6 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_tools/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 | Changelog for package imu_tools
3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 |
5 | 1.2.2 (2020-05-25)
6 | ------------------
7 |
8 | 1.2.1 (2019-05-06)
9 | ------------------
10 |
11 | 1.2.0 (2018-05-25)
12 | ------------------
13 |
14 | 1.1.5 (2017-05-24)
15 | ------------------
16 |
17 | 1.1.4 (2017-05-22)
18 | ------------------
19 |
20 | 1.1.3 (2017-03-10)
21 | ------------------
22 |
23 | 1.1.2 (2016-09-07)
24 | ------------------
25 |
26 | 1.1.1 (2016-09-07)
27 | ------------------
28 |
29 | 1.1.0 (2016-04-25)
30 | ------------------
31 |
32 | 1.0.11 (2016-04-22)
33 | -------------------
34 |
35 | 1.0.10 (2016-04-22)
36 | -------------------
37 |
38 | 1.0.9 (2015-10-16)
39 | ------------------
40 |
41 | 1.0.8 (2015-10-07)
42 | ------------------
43 | * Add imu_complementary_filter to meta package
44 | * Contributors: Martin Günther
45 |
46 | 1.0.7 (2015-10-07)
47 | ------------------
48 |
49 | 1.0.6 (2015-10-06)
50 | ------------------
51 |
52 | 1.0.5 (2015-06-24)
53 | ------------------
54 |
55 | 1.0.4 (2015-05-06)
56 | ------------------
57 |
58 | 1.0.3 (2015-01-29)
59 | ------------------
60 |
61 | 1.0.2 (2015-01-27)
62 | ------------------
63 |
64 | 1.0.1 (2014-12-10)
65 | ------------------
66 | * add me as maintainer to package.xml
67 | * Contributors: Martin Günther
68 |
69 | 1.0.0 (2014-09-03)
70 | ------------------
71 | * First public release
72 | * catkinization of imu_tools metapackage
73 | * Contributors: Francisco Vina
74 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_tools/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5.1)
2 | project(imu_tools)
3 | find_package(ament_cmake REQUIRED)
4 | ament_package()
5 |
--------------------------------------------------------------------------------
/src/imu_tools/imu_tools/package.xml:
--------------------------------------------------------------------------------
1 |
2 | imu_tools
3 | 1.2.2
4 |
5 | Various tools for IMU devices
6 |
7 | Martin Günther
8 | BSD, GPL
9 |
10 | http://ros.org/wiki/imu_tools
11 |
12 | ament_cmake
13 |
14 |
15 | imu_filter_madgwick
16 | rviz_imu_plugin
17 |
18 |
19 | ament_cmake
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/imu_tools/rviz_imu_plugin/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | rviz_imu_plugin
5 | 1.2.2
6 |
7 | RVIZ plugin for IMU visualization
8 |
9 | BSD
10 | http://ros.org/wiki/rviz_imu_plugin
11 | Ivan Dryanovski
12 | Martin Günther
13 |
14 | ament_cmake
15 |
16 | qtbase5-dev
17 |
18 | message_filters
19 | pluginlib
20 | rclcpp
21 | rviz_common
22 | rviz_ogre_vendor
23 | rviz_rendering
24 | sensor_msgs
25 | tf2
26 | tf2_ros
27 |
28 | libqt5-core
29 | libqt5-gui
30 | libqt5-opengl
31 | libqt5-widgets
32 |
33 |
34 |
35 |
36 | ament_cmake
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/imu_tools/rviz_imu_plugin/plugin_description.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 | Displays the orientation and acceleration components of sensor_msgs/Imu messages.
9 |
10 | sensor_msgs/msg/Imu
11 |
12 |
13 |
16 |
17 |
18 | Displays the orientation of sensor_msgs/MagneticField messages.
19 |
20 | sensor_msgs/msg/MagneticField
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/imu_tools/rviz_imu_plugin/rosdoc.yaml:
--------------------------------------------------------------------------------
1 | - builder: sphinx
2 | sphinx_root_dir: src/doc
3 |
--------------------------------------------------------------------------------
/src/imu_tools/rviz_imu_plugin/rviz_imu_plugin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/imu_tools/rviz_imu_plugin/rviz_imu_plugin.png
--------------------------------------------------------------------------------
/src/robot_localization/.travis.yml:
--------------------------------------------------------------------------------
1 | dist: bionic
2 | sudo: enabled
3 | language: generic
4 |
5 | env:
6 | global:
7 | - ROS2_WS_ROBOT_LOCALIZATION=~/ros2_ws_robot_localization
8 | - ROS2_WS_ROBOT_LOCALIZATION_SRC=${ROS2_WS_ROBOT_LOCALIZATION}/src
9 |
10 | # command to install dependencies
11 | install:
12 | - sudo apt update && sudo apt install curl
13 | - curl http://repo.ros2.org/repos.key | sudo apt-key add -
14 | - sudo sh -c 'echo "deb [arch=amd64,arm64] http://repo.ros2.org/ubuntu/main `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
15 | - export ROS_DISTRO=bouncy
16 | - sudo apt update && sudo apt install -y python3-rosdep ros-$ROS_DISTRO-ros-base
17 | - sudo apt install python3-argcomplete
18 | - sudo apt install python3-colcon-common-extensions
19 | - sudo apt install build-essential
20 | - source /opt/ros/bouncy/setup.bash
21 | - source ~/${ROS2_WS_ROBOT_LOCALIZATION}/install/setup.bash
22 | - sudo rosdep init
23 | - rosdep update
24 | - sudo apt install python3-pip
25 | - sudo pip3 install argcomplete setuptools pytest pep257 flake8
26 | - sudo -H python3 -m pip install -U setuptools
27 |
28 |
29 | # command to run tests
30 | script:
31 | # - mkdir -p $ROS2_WS_ROBOT_LOCALIZATION
32 | - mkdir -p $ROS2_WS_ROBOT_LOCALIZATION_SRC
33 | - ln -s $TRAVIS_BUILD_DIR $ROS2_WS_ROBOT_LOCALIZATION_SRC
34 | - cd $ROS2_WS_ROBOT_LOCALIZATION
35 | - colcon build
36 | # - colcon test
37 |
38 | branches:
39 | only:
40 | - ros2
41 |
42 | notifications:
43 | email: false
44 |
--------------------------------------------------------------------------------
/src/robot_localization/README.md:
--------------------------------------------------------------------------------
1 | robot_localization
2 | ==================
3 |
4 | robot_localization is a package of nonlinear state estimation nodes. The package was developed by Charles River Analytics, Inc.
5 |
6 | Please see documentation here: http://wiki.ros.org/robot_localization
7 |
--------------------------------------------------------------------------------
/src/robot_localization/doc/.templates/full_globaltoc.html:
--------------------------------------------------------------------------------
1 |
2 | {{ toctree(includehidden=True) }}
3 |
4 |
5 |
6 | - API Documentation
7 | - GitHub Repository
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/robot_localization/doc/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | ../CHANGELOG.rst
--------------------------------------------------------------------------------
/src/robot_localization/doc/images/figure1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/doc/images/figure1.png
--------------------------------------------------------------------------------
/src/robot_localization/doc/images/rl_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/doc/images/rl_small.png
--------------------------------------------------------------------------------
/src/robot_localization/doc/manifest.yaml:
--------------------------------------------------------------------------------
1 | actions: []
2 | authors: Tom Moore
3 | brief: ''
4 | bugtracker: ''
5 | depends:
6 | - catkin
7 | - eigen
8 | - diagnostic_updater
9 | - cmake_modules
10 | - tf2
11 | - nav_msgs
12 | - roscpp
13 | - rostest
14 | - tf2_ros
15 | - message_generation
16 | - message_filters
17 | - tf2_geometry_msgs
18 | - sensor_msgs
19 | - message_runtime
20 | - std_msgs
21 | - roslint
22 | - rosunit
23 | - diagnostic_msgs
24 | - geographic_msgs
25 | - xmlrpcpp
26 | - python-catkin-pkg
27 | - geometry_msgs
28 | - rosbag
29 | description: The robot_localization package provides nonlinear state estimation through
30 | sensor fusion of an abritrary number of sensors.
31 | license: BSD
32 | maintainers: Tom Moore
33 | msgs: []
34 | package_type: package
35 | repo_url: ''
36 | srvs:
37 | - SetPose
38 | - SetDatum
39 | url: http://ros.org/wiki/robot_localization
40 |
--------------------------------------------------------------------------------
/src/robot_localization/doc/robot_localization_ias13_revised.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/doc/robot_localization_ias13_revised.pdf
--------------------------------------------------------------------------------
/src/robot_localization/launch/ekf.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2018 Open Source Robotics Foundation, Inc.
2 | # Copyright 2019 Samsung Research America
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | from launch import LaunchDescription
17 | from ament_index_python.packages import get_package_share_directory
18 | import launch_ros.actions
19 | import os
20 | import yaml
21 | from launch.substitutions import EnvironmentVariable
22 | import pathlib
23 | import launch.actions
24 | from launch.actions import DeclareLaunchArgument
25 |
26 | def generate_launch_description():
27 | return LaunchDescription([
28 | launch_ros.actions.Node(
29 | package='robot_localization',
30 | executable='ekf_node',
31 | name='ekf_filter_node',
32 | output='screen',
33 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'ekf.yaml'), {'use_sim_time': True} ],
34 | remappings=[('odometry/filtered', 'odometry/local')],
35 | )
36 | ])
37 |
--------------------------------------------------------------------------------
/src/robot_localization/launch/ekf_global.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2018 Open Source Robotics Foundation, Inc.
2 | # Copyright 2019 Samsung Research America
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | from launch import LaunchDescription
17 | from ament_index_python.packages import get_package_share_directory
18 | import launch_ros.actions
19 | import os
20 | import yaml
21 | from launch.substitutions import EnvironmentVariable
22 | import pathlib
23 | import launch.actions
24 | from launch.actions import DeclareLaunchArgument
25 |
26 | def generate_launch_description():
27 | return LaunchDescription([
28 | launch_ros.actions.Node(
29 | package='robot_localization',
30 | executable='ekf_node',
31 | name='ekf_filter_node_map',
32 | output='screen',
33 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'dual_ekf_navsat_example.yaml'), {'use_sim_time': True}],
34 | remappings=[('odometry/filtered', 'odometry/global')],
35 | )
36 | ])
37 |
--------------------------------------------------------------------------------
/src/robot_localization/launch/navsat_transform.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2019 Samsung Research America
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | from launch import LaunchDescription
16 | from ament_index_python.packages import get_package_share_directory
17 | import launch_ros.actions
18 | import os
19 | import yaml
20 | from launch.substitutions import EnvironmentVariable
21 | import pathlib
22 | import launch.actions
23 | from launch.actions import DeclareLaunchArgument
24 |
25 | def generate_launch_description():
26 | return LaunchDescription([
27 | launch_ros.actions.Node(
28 | package='robot_localization',
29 | executable='navsat_transform_node',
30 | name='navsat_transform_node',
31 | output='screen',
32 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'navsat_transform.yaml'), {'use_sim_time': True}],
33 | remappings=[('imu', 'imu/data'),
34 | ('gps/fix', 'gps/fix'),
35 | ('gps/filtered', 'gps/filtered'),
36 | ('odometry/gps', 'odometry/gps'),
37 | ('odometry/filtered', 'odometry/global')],
38 | ),
39 | ])
40 |
--------------------------------------------------------------------------------
/src/robot_localization/launch/ukf.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2018 Open Source Robotics Foundation, Inc.
2 | # Copyright 2019 Samsung Research America
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | from launch import LaunchDescription
17 | from ament_index_python.packages import get_package_share_directory
18 | import launch_ros.actions
19 | import os
20 | import yaml
21 | from launch.substitutions import EnvironmentVariable
22 | import pathlib
23 | import launch.actions
24 | from launch.actions import DeclareLaunchArgument
25 |
26 | def generate_launch_description():
27 | return LaunchDescription([
28 | launch_ros.actions.Node(
29 | package='robot_localization',
30 | executable='ukf_node',
31 | name='ukf_filter_node',
32 | output='screen',
33 | parameters=[os.path.join(get_package_share_directory("robot_localization"), 'params', 'ukf.yaml')],
34 | ),
35 | ])
36 |
--------------------------------------------------------------------------------
/src/robot_localization/rosdoc.yaml:
--------------------------------------------------------------------------------
1 | - builder: sphinx
2 | sphinx_root_dir: doc
3 | - builder: doxygen
4 | output_dir: api
5 | file_patterns: '*.cpp *.h *.dox *.md'
6 | exclude_patterns: '*/test/*'
7 |
--------------------------------------------------------------------------------
/src/robot_localization/srv/FromLL.srv:
--------------------------------------------------------------------------------
1 | geographic_msgs/GeoPoint ll_point
2 | ---
3 | geometry_msgs/Point map_point
4 |
--------------------------------------------------------------------------------
/src/robot_localization/srv/GetState.srv:
--------------------------------------------------------------------------------
1 | builtin_interfaces/Time time_stamp
2 | string frame_id
3 | ---
4 | # State vector: x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az
5 | float64[15] state
6 |
7 | # Covariance matrix in row-major order
8 | float64[225] covariance
9 |
--------------------------------------------------------------------------------
/src/robot_localization/srv/SetDatum.srv:
--------------------------------------------------------------------------------
1 | geographic_msgs/GeoPose geo_pose
2 | ---
3 |
--------------------------------------------------------------------------------
/src/robot_localization/srv/SetPose.srv:
--------------------------------------------------------------------------------
1 | geometry_msgs/PoseWithCovarianceStamped pose
2 | ---
3 |
--------------------------------------------------------------------------------
/src/robot_localization/srv/ToLL.srv:
--------------------------------------------------------------------------------
1 | geometry_msgs/Point map_point
2 | ---
3 | geographic_msgs/GeoPoint ll_point
4 |
--------------------------------------------------------------------------------
/src/robot_localization/srv/ToggleFilterProcessing.srv:
--------------------------------------------------------------------------------
1 | bool on
2 | ---
3 | bool status
4 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test1.bag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/test/test1.bag
--------------------------------------------------------------------------------
/src/robot_localization/test/test2.bag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/test/test2.bag
--------------------------------------------------------------------------------
/src/robot_localization/test/test3.bag:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/robot_localization/test/test3.bag
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ekf_localization_node_bag1.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #************************ test_ekf_localization_node_bag1 ***************************
4 |
5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c.
6 |
7 | $PWD = `pwd`
8 | echo "Current Working Directory = $PWD"
9 | ROS1_DISTRO=melodic
10 | ROS2_DISTRO=crystal
11 | echo "ROS1_DISTRO = $ROS1_DISTRO"
12 | echo "ROS2_DISTRO = $ROS2_DISTRO"
13 |
14 | #Command to run roscore
15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash"
16 |
17 | #Command to run ros1_bridge
18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash"
19 |
20 | #Command to play .bag from ROS1
21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test1.bag --clock -d 5; exec /bin/bash"
22 |
23 | #Command to launch TestCase launch.py
24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ekf_localization_node_bag1.launch.py; exec /bin/bash"
25 |
26 | #Command to run static_transform_publisher
27 | cmd5="source /opt/ros/$ROS2_DISTRO/setup.bash; ros2 run tf2_ros static_transform_publisher 0 -0.3 0.52 -1.570796327 0 1.570796327 base_link imu_link; exec /bin/bash"
28 |
29 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1"
30 | sleep 1
31 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2"
32 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3"
33 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4"
34 | gnome-terminal --tab -t "static_transform_publisher" -- /bin/bash -c "$cmd5"
35 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ekf_localization_node_bag2.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #************************ test_ekf_localization_node_bag2 ***************************
4 |
5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c.
6 |
7 | $PWD = `pwd`
8 | echo "Current Working Directory = $PWD"
9 | ROS1_DISTRO=melodic
10 | ROS2_DISTRO=crystal
11 | echo "ROS1_DISTRO = $ROS1_DISTRO"
12 | echo "ROS2_DISTRO = $ROS2_DISTRO"
13 |
14 | #Command to run roscore
15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash"
16 |
17 | #Command to run ros1_bridge
18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash"
19 |
20 | #Command to play .bag from ROS1
21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test2.bag --clock -d 5; exec /bin/bash"
22 |
23 | #Command to launch TestCase launch.py
24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ekf_localization_node_bag2.launch.py; exec /bin/bash"
25 |
26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1"
27 | sleep 1
28 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3"
29 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4"
30 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2"
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ekf_localization_node_bag3.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #************************ test_ekf_localization_node_bag3 ***************************
4 |
5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c.
6 |
7 | $PWD = `pwd`
8 | echo "Current Working Directory = $PWD"
9 | ROS1_DISTRO=melodic
10 | ROS2_DISTRO=crystal
11 | echo "ROS1_DISTRO = $ROS1_DISTRO"
12 | echo "ROS2_DISTRO = $ROS2_DISTRO"
13 |
14 | #Command to run roscore
15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash"
16 |
17 | #Command to run ros1_bridge
18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash"
19 |
20 | #Command to play .bag from ROS1
21 | cmd3="sleep 2; source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set /use_sim_time true; rosbag play $PWD/src/robot_localization/test/test3.bag --clock -d 5; exec /bin/bash"
22 |
23 | #Command to launch TestCase launch.py
24 | cmd4="sleep 2; source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ekf_localization_node_bag3.launch.py; exec /bin/bash"
25 |
26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1"
27 | sleep 1
28 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2"
29 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3"
30 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4"
31 |
32 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_filter_base_diagnostics_timestamps.yaml:
--------------------------------------------------------------------------------
1 | #
2 |
3 | #
4 | test_filter_base_diagnostics_timestamps:
5 | ros__parameters:
6 | debug: true
7 | debug_out_file: debug_ekf_localization.txt
8 | odom0: /example/odom
9 | pose0: /example/pose
10 | twist0: /example/twist
11 | imu0: /example/imu/data
12 |
13 | odom0_config: [false, false, false,
14 | false, false, false,
15 | true, false, false,
16 | false, false, false,
17 | false, false, false]
18 | odom0_relative: false
19 |
20 | pose0_config: [true, true, false,
21 | false, false, false,
22 | false, false, false,
23 | false, false, false,
24 | false, false, false]
25 |
26 | twist0_config: [false, false, false,
27 | false, false, false,
28 | true, true, true,
29 | true, true, true,
30 | false, false, false]
31 |
32 | imu0_config: [false, false, false,
33 | true, true, true,
34 | false, false, false,
35 | true, true, true,
36 | true, true, true]
37 |
38 | print_diagnostics: true
39 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_robot_localization_estimator.launch.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | import ament_index_python.packages
4 | import launch
5 | import launch_ros.actions
6 |
7 | def generate_launch_description():
8 |
9 | # TODO: Port ROS 1 test launch params: clear_params="true"
10 | return launch.LaunchDescription([
11 | launch_ros.actions.Node(
12 | package='robot_localization',
13 | executable='test_robot_localization_estimator',
14 | name='test_rle',
15 | ),
16 | ])
17 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ros_robot_localization_listener.launch.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | import ament_index_python.packages
4 | import launch
5 | import launch_ros.actions
6 |
7 | import os
8 |
9 | def generate_launch_description():
10 |
11 | default_params_yaml = os.path.join(
12 | ament_index_python.packages.get_package_share_directory('robot_localization'),
13 | 'test', 'test_ros_robot_localization_listener.yaml')
14 |
15 | return launch.LaunchDescription([
16 | # TODO: Port ROS 1 test launch params: clear_params="true"
17 | launch_ros.actions.Node(
18 | package='robot_localization',
19 | executable='test_ros_robot_localization_listener',
20 | remappings=[('test_ros_robot_localization_listener', 'test_estimator')],
21 | arguments=['__params:=' + default_params_yaml],
22 | output='screen',
23 | ),
24 | # TODO: Port ROS 1 test launch params: clear_params="true"
25 | launch_ros.actions.Node(
26 | package='robot_localization',
27 | executable='test_ros_robot_localization_listener_publisher',
28 | name='test_estimator',
29 | remappings=[
30 | ('/odometry/filtered', 'odom/filtered'),
31 | ('/accel/filtered', 'acceleration/filtered'),
32 | ],
33 | output='screen',
34 | ),
35 | ])
36 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ukf_localization_node_bag1.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #************************ test_ukf_localization_node_bag1 ***************************
4 |
5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c.
6 |
7 | $PWD = `pwd`
8 | echo "Current Working Directory = $PWD"
9 | ROS1_DISTRO=melodic
10 | ROS2_DISTRO=crystal
11 | echo "ROS1_DISTRO = $ROS1_DISTRO"
12 | echo "ROS2_DISTRO = $ROS2_DISTRO"
13 |
14 | #Command to run roscore
15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash"
16 |
17 | #Command to run ros1_bridge
18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash"
19 |
20 | #Command to play .bag from ROS1
21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test1.bag --clock -d 5; exec /bin/bash"
22 |
23 | #Command to launch TestCase launch.py
24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ukf_localization_node_bag1.launch.py; exec /bin/bash"
25 |
26 | #Command to run static_transform_publisher
27 | cmd5="source /opt/ros/$ROS2_DISTRO/setup.bash; ros2 run tf2_ros static_transform_publisher 0 -0.3 0.52 -1.570796327 0 1.570796327 base_link imu_link; exec /bin/bash"
28 |
29 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1"
30 | sleep 1
31 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2"
32 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3"
33 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4"
34 | gnome-terminal --tab -t "static_transform_publisher" -- /bin/bash -c "$cmd5"
35 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ukf_localization_node_bag2.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #************************ test_ukf_localization_node_bag2 ***************************
4 |
5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c.
6 |
7 | $PWD = `pwd`
8 | echo "Current Working Directory = $PWD"
9 | ROS1_DISTRO=melodic
10 | ROS2_DISTRO=crystal
11 | echo "ROS1_DISTRO = $ROS1_DISTRO"
12 | echo "ROS2_DISTRO = $ROS2_DISTRO"
13 |
14 | #Command to run roscore
15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash"
16 |
17 | #Command to run ros1_bridge
18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash"
19 |
20 | #Command to play .bag from ROS1
21 | cmd3="source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set use_sim_time true; rosbag play $PWD/src/robot_localization/test/test2.bag --clock -d 5; exec /bin/bash"
22 |
23 | #Command to launch TestCase launch.py
24 | cmd4="source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ukf_localization_node_bag2.launch.py; exec /bin/bash"
25 |
26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1"
27 | sleep 1
28 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3"
29 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4"
30 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2"
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/robot_localization/test/test_ukf_localization_node_bag3.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | #************************ test_ukf_localization_node_bag3 ***************************
4 |
5 | # In this automatic Script, multiple terminals will be opened, user need to check the terminal on which bag is playing. Once bag is stoped, check the terminal on which launch.py is running, user will see, test cases result (Pass Or Fail) after pressing ctrl+c.
6 |
7 | $PWD = `pwd`
8 | echo "Current Working Directory = $PWD"
9 | ROS1_DISTRO=melodic
10 | ROS2_DISTRO=crystal
11 | echo "ROS1_DISTRO = $ROS1_DISTRO"
12 | echo "ROS2_DISTRO = $ROS2_DISTRO"
13 |
14 | #Command to run roscore
15 | cmd1="source /opt/ros/$ROS1_DISTRO/setup.sh; roscore; exec /bin/bash"
16 |
17 | #Command to run ros1_bridge
18 | cmd2="source ~/ros2_ws/install/setup.bash; source /opt/ros/$ROS1_DISTRO/setup.bash; ros2 run ros1_bridge dynamic_bridge --bridge-all-topics; exec /bin/bash"
19 |
20 | #Command to play .bag from ROS1
21 | cmd3="sleep 2; source /opt/ros/$ROS1_DISTRO/setup.bash; rosparam set /use_sim_time true; rosbag play $PWD/src/robot_localization/test/test3.bag --clock -d 5; exec /bin/bash"
22 |
23 | #Command to launch TestCase launch.py
24 | cmd4="sleep 2; source /opt/ros/$ROS2_DISTRO/setup.bash; source $PWD/install/setup.bash; ros2 launch robot_localization test_ukf_localization_node_bag3.launch.py; exec /bin/bash"
25 |
26 | gnome-terminal --tab -t "roscore" -- /bin/bash -c "$cmd1"
27 | sleep 1
28 | gnome-terminal --tab -t "ros1_bridge" -- /bin/bash -c "$cmd2"
29 | gnome-terminal --tab -t "bag" -- /bin/bash -c "$cmd3"
30 | gnome-terminal --tab -t "TestCase_launch" -- /bin/bash -c "$cmd4"
31 |
32 |
--------------------------------------------------------------------------------
/src/turtlebot3/.travis.yml:
--------------------------------------------------------------------------------
1 | services:
2 | - docker
3 |
4 | language:
5 | - generic
6 |
7 | notifications:
8 | email:
9 | on_success: change
10 | on_failure: always
11 | recipients:
12 | - willson@robotis.com
13 |
14 | branches:
15 | only:
16 | - ros2
17 | - ros2-devel
18 | - foxy-devel
19 |
20 | install:
21 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci
22 |
23 | matrix:
24 | include:
25 | - script: .ros2ci/travis.bash foxy
26 |
--------------------------------------------------------------------------------
/src/turtlebot3/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Any contribution that you make to this repository will
2 | be under the Apache 2 License, as dictated by that
3 | [license](http://www.apache.org/licenses/LICENSE-2.0.html):
4 |
5 | ~~~
6 | 5. Submission of Contributions. Unless You explicitly state otherwise,
7 | any Contribution intentionally submitted for inclusion in the Work
8 | by You to the Licensor shall be under the terms and conditions of
9 | this License, without any additional terms or conditions.
10 | Notwithstanding the above, nothing herein shall supersede or modify
11 | the terms of any separate license agreement you may have executed
12 | with Licensor regarding such Contributions.
13 | ~~~
14 |
15 | Contributors must sign-off each commit by adding a `Signed-off-by: ...`
16 | line to commit messages to certify that they have the right to submit
17 | the code they are contributing to the project according to the
18 | [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
19 |
--------------------------------------------------------------------------------
/src/turtlebot3/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ISSUE TEMPLATE ver. 0.4.0
2 |
3 | 1. Which TurtleBot3 you have?
4 |
5 | - [ ] Burger
6 | - [ ] Waffle
7 | - [ ] Waffle Pi
8 |
9 | 2. Which ROS is working with TurtleBot3?
10 |
11 | - [ ] ROS 1 Kinetic Kame
12 | - [ ] ROS 1 Melodic Morenia
13 | - [ ] ROS 1 Noetic Ninjemys
14 | - [ ] ROS 2 Dashing Diademata
15 | - [ ] ROS 2 Eloquent Elusor
16 | - [ ] ROS 2 Foxy Fitzroy
17 | - [ ] etc (PLEASE, WRITE DOWN YOUR ROS VERSION HERE)
18 |
19 | 3. Which SBC(Single Board Computer) is working on TurtleBot3?
20 |
21 | - [ ] Raspberry Pi 3
22 | - [ ] Raspberry Pi 4
23 | - [ ] Intel Joule 570x
24 | - [ ] etc (PLEASE, WRITE DOWN YOUR SBC HERE)
25 |
26 | 4. Which OS you installed in SBC?
27 |
28 | - [ ] Raspbian
29 | - [ ] Ubuntu MATE 16.04 or later
30 | - [ ] Ubuntu Server 18.04 or later
31 | - [ ] Ubuntu Server 20.04 or later
32 | - [ ] etc (PLEASE, WRITE DOWN YOUR OS)
33 |
34 | 5. Which OS you installed in Remote PC?
35 |
36 | - [ ] Ubuntu 16.04 LTS (Xenial Xerus)
37 | - [ ] Ubuntu 18.04 LTS (Bionic Beaver)
38 | - [ ] Ubuntu 20.04 LTS (Focal Fossa)
39 | - [ ] Linux Mint 18.x
40 | - [ ] Linux Mint 19.x
41 | - [ ] etc (PLEASE, WRITE DOWN YOUR OS)
42 |
43 | 6. Write down software version and firmware version
44 |
45 | - Software version: [x.x.x]
46 | - Firmware version: [x.x.x]
47 |
48 | 7. Write down the commands you used in order
49 |
50 | - HERE
51 |
52 | 8. Copy and Paste your error message on terminal
53 |
54 | - HERE
55 |
56 | 9. Please, describe detailedly what difficulty you are in
57 |
58 | - HERE
59 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | turtlebot3/turtlebot3:
3 | type: git
4 | url: https://github.com/ROBOTIS-GIT/turtlebot3.git
5 | version: foxy-devel
6 | turtlebot3/turtlebot3_msgs:
7 | type: git
8 | url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
9 | version: foxy-devel
10 | turtlebot3/turtlebot3_simulations:
11 | type: git
12 | url: https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
13 | version: foxy-devel
14 | utils/DynamixelSDK:
15 | type: git
16 | url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git
17 | version: foxy-devel
18 | utils/hls_lfcd_lds_driver:
19 | type: git
20 | url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
21 | version: foxy-devel
22 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5)
2 | project(turtlebot3)
3 | find_package(ament_cmake REQUIRED)
4 | ament_package()
5 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3
5 | 2.1.1
6 |
7 | ROS 2 packages for TurtleBot3
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Ryan Shim
16 | Pyo
17 | ament_cmake
18 | turtlebot3_bringup
19 | turtlebot3_cartographer
20 | turtlebot3_description
21 | turtlebot3_example
22 | turtlebot3_navigation2
23 | turtlebot3_node
24 | turtlebot3_teleop
25 |
26 | ament_cmake
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/99-turtlebot3-cdc.rules:
--------------------------------------------------------------------------------
1 | #http://linux-tips.org/t/prevent-modem-manager-to-capture-usb-serial-devices/284/2.
2 |
3 | #cp rules /etc/udev/rules.d/
4 | #sudo udevadm control --reload-rules
5 | #sudo udevadm trigger
6 |
7 | ATTRS{idVendor}=="0483" ATTRS{idProduct}=="5740", ENV{ID_MM_DEVICE_IGNORE}="1", MODE:="0666"
8 | ATTRS{idVendor}=="0483" ATTRS{idProduct}=="df11", MODE:="0666"
9 | ATTRS{idVendor}=="fff1" ATTRS{idProduct}=="ff48", ENV{ID_MM_DEVICE_IGNORE}="1", MODE:="0666"
10 | ATTRS{idVendor}=="10c4" ATTRS{idProduct}=="ea60", ENV{ID_MM_DEVICE_IGNORE}="1", MODE:="0666"
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # Set minimum required version of cmake, project name and compile options
3 | ################################################################################
4 | cmake_minimum_required(VERSION 3.5)
5 | project(turtlebot3_bringup)
6 |
7 | if(NOT CMAKE_CXX_STANDARD)
8 | set(CMAKE_CXX_STANDARD 14)
9 | endif()
10 |
11 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
12 | add_compile_options(-Wall -Wextra -Wpedantic)
13 | endif()
14 |
15 | ################################################################################
16 | # Find ament packages and libraries for ament and system dependencies
17 | ################################################################################
18 | find_package(ament_cmake REQUIRED)
19 |
20 | ################################################################################
21 | # Install
22 | ################################################################################
23 | install(
24 | DIRECTORY launch param
25 | DESTINATION share/${PROJECT_NAME}
26 | )
27 |
28 | ################################################################################
29 | # Macro for ament package
30 | ################################################################################
31 | ament_package()
32 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/launch/rviz2.launch.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Darby Lim
18 |
19 | import os
20 |
21 | from ament_index_python.packages import get_package_share_directory
22 | from launch import LaunchDescription
23 | from launch_ros.actions import Node
24 |
25 |
26 | def generate_launch_description():
27 | rviz_config_dir = os.path.join(
28 | get_package_share_directory('turtlebot3_description'),
29 | 'rviz',
30 | 'model.rviz')
31 |
32 | return LaunchDescription([
33 | Node(
34 | package='rviz2',
35 | executable='rviz2',
36 | name='rviz2',
37 | arguments=['-d', rviz_config_dir],
38 | output='screen'),
39 | ])
40 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_state_publisher.launch.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Darby Lim
18 |
19 | import os
20 |
21 | from ament_index_python.packages import get_package_share_directory
22 | from launch import LaunchDescription
23 | from launch.actions import DeclareLaunchArgument
24 | from launch.substitutions import LaunchConfiguration
25 | from launch_ros.actions import Node
26 |
27 |
28 | def generate_launch_description():
29 | TURTLEBOT3_MODEL = os.environ['TURTLEBOT3_MODEL']
30 |
31 | use_sim_time = LaunchConfiguration('use_sim_time', default='false')
32 | urdf_file_name = 'turtlebot3_' + TURTLEBOT3_MODEL + '.urdf'
33 |
34 | print("urdf_file_name : {}".format(urdf_file_name))
35 |
36 | urdf = os.path.join(
37 | get_package_share_directory('turtlebot3_description'),
38 | 'urdf',
39 | urdf_file_name)
40 |
41 | return LaunchDescription([
42 | DeclareLaunchArgument(
43 | 'use_sim_time',
44 | default_value='false',
45 | description='Use simulation (Gazebo) clock if true'),
46 |
47 | Node(
48 | package='robot_state_publisher',
49 | executable='robot_state_publisher',
50 | name='robot_state_publisher',
51 | output='screen',
52 | parameters=[{'use_sim_time': use_sim_time}],
53 | arguments=[urdf]),
54 | ])
55 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_bringup
5 | 2.1.1
6 |
7 | ROS 2 launch scripts for starting the TurtleBot3
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Pyo
16 | ament_cmake
17 | hls_lfcd_lds_driver
18 | robot_state_publisher
19 | rviz2
20 | turtlebot3_description
21 | turtlebot3_node
22 |
23 | ament_cmake
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/param/burger.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_node:
2 | ros__parameters:
3 |
4 | opencr:
5 | id: 200
6 | baud_rate: 1000000
7 | protocol_version: 2.0
8 |
9 | wheels:
10 | separation: 0.160
11 | radius: 0.033
12 |
13 | motors:
14 | profile_acceleration_constant: 214.577
15 |
16 | # [rev/min2]
17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration
18 | profile_acceleration: 0.0
19 |
20 | sensors:
21 | bumper_1: false
22 | bumper_2: false
23 |
24 | illumination: false
25 |
26 | ir: false
27 |
28 | sonar: false
29 |
30 | diff_drive_controller:
31 | ros__parameters:
32 |
33 | odometry:
34 | publish_tf: true
35 | use_imu: true
36 | frame_id: "odom"
37 | child_frame_id: "base_footprint"
38 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/param/waffle.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_node:
2 | ros__parameters:
3 |
4 | opencr:
5 | id: 200
6 | baud_rate: 1000000
7 | protocol_version: 2.0
8 |
9 | wheels:
10 | separation: 0.287
11 | radius: 0.033
12 |
13 | motors:
14 | profile_acceleration_constant: 214.577
15 |
16 | # [rev/min2]
17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration
18 | profile_acceleration: 0.0
19 |
20 | sensors:
21 | bumper_1: false
22 | bumper_2: false
23 |
24 | illumination: false
25 |
26 | ir: false
27 |
28 | sonar: false
29 |
30 | diff_drive_controller:
31 | ros__parameters:
32 |
33 | odometry:
34 | publish_tf: true
35 | use_imu: true
36 | frame_id: "odom"
37 | child_frame_id: "base_footprint"
38 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_bringup/param/waffle_pi.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_node:
2 | ros__parameters:
3 |
4 | opencr:
5 | id: 200
6 | baud_rate: 1000000
7 | protocol_version: 2.0
8 |
9 | wheels:
10 | separation: 0.287
11 | radius: 0.033
12 |
13 | motors:
14 | profile_acceleration_constant: 214.577
15 |
16 | # [rev/min2]
17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration
18 | profile_acceleration: 0.0
19 |
20 | sensors:
21 | bumper_1: false
22 | bumper_2: false
23 |
24 | illumination: false
25 |
26 | ir: false
27 |
28 | sonar: false
29 |
30 | diff_drive_controller:
31 | ros__parameters:
32 |
33 | odometry:
34 | publish_tf: true
35 | use_imu: true
36 | frame_id: "odom"
37 | child_frame_id: "base_footprint"
38 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_cartographer/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # Set minimum required version of cmake, project name and compile options
3 | ################################################################################
4 | cmake_minimum_required(VERSION 3.5)
5 | project(turtlebot3_cartographer)
6 |
7 | ################################################################################
8 | # Find ament packages and libraries for ament and system dependencies
9 | ################################################################################
10 | find_package(ament_cmake REQUIRED)
11 |
12 | ################################################################################
13 | # Install
14 | ################################################################################
15 | install(
16 | DIRECTORY config launch rviz
17 | DESTINATION share/${PROJECT_NAME}
18 | )
19 |
20 | ################################################################################
21 | # Macro for ament package
22 | ################################################################################
23 | ament_package()
24 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_cartographer/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_cartographer
5 | 2.1.1
6 |
7 | ROS 2 launch scripts for cartographer
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Pyo
16 | ament_cmake
17 | cartographer_ros
18 |
19 | ament_cmake
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_ci.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | turtlebot3/turtlebot3_msgs:
3 | type: git
4 | url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
5 | version: foxy-devel
6 | utils/DynamixelSDK:
7 | type: git
8 | url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git
9 | version: foxy-devel
10 | utils/hls_lfcd_lds_driver:
11 | type: git
12 | url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
13 | version: foxy-devel
14 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # Set minimum required version of cmake, project name and compile options
3 | ################################################################################
4 | cmake_minimum_required(VERSION 3.5)
5 | project(turtlebot3_description)
6 |
7 | if(NOT CMAKE_CXX_STANDARD)
8 | set(CMAKE_CXX_STANDARD 14)
9 | endif()
10 |
11 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
12 | add_compile_options(-Wall -Wextra -Wpedantic)
13 | endif()
14 |
15 | ################################################################################
16 | # Find ament packages and libraries for ament and system dependencies
17 | ################################################################################
18 | find_package(ament_cmake REQUIRED)
19 | find_package(urdf REQUIRED)
20 |
21 | ################################################################################
22 | # Install
23 | ################################################################################
24 | install(DIRECTORY meshes rviz urdf
25 | DESTINATION share/${PROJECT_NAME}
26 | )
27 |
28 | ################################################################################
29 | # Macro for ament package
30 | ################################################################################
31 | ament_package()
32 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/bases/burger_base.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/bases/burger_base.stl
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/bases/waffle_base.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/bases/waffle_base.stl
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/bases/waffle_pi_base.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/bases/waffle_pi_base.stl
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/sensors/astra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/sensors/astra.jpg
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/sensors/lds.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/sensors/lds.stl
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/sensors/r200.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/sensors/r200.jpg
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/wheels/left_tire.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/wheels/left_tire.stl
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/meshes/wheels/right_tire.stl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_description/meshes/wheels/right_tire.stl
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_description
5 | 2.1.1
6 |
7 | 3D models of the TurtleBot3 for simulation and visualization
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Pyo
16 | ament_cmake
17 | urdf
18 |
19 | ament_cmake
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_description/urdf/common_properties.urdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_example
5 | 2.1.1
6 |
7 | This package provides four basic examples for TurtleBot3 (i.e., interactive marker, object detection, patrol and position control).
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Ryan Shim
15 | Gilbert
16 | ament_cmake
17 | geometry_msgs
18 | nav_msgs
19 | rclpy
20 | sensor_msgs
21 | turtlebot3_msgs
22 |
23 | ament_python
24 |
25 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/resource/turtlebot3_example:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/resource/turtlebot3_example
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/setup.cfg:
--------------------------------------------------------------------------------
1 | [develop]
2 | script-dir=$base/lib/turtlebot3_example
3 | [install]
4 | install-scripts=$base/lib/turtlebot3_example
5 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_obstacle_detection/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_obstacle_detection/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_obstacle_detection/main.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Ryan Shim, Gilbert
18 |
19 | import rclpy
20 |
21 | from turtlebot3_example.turtlebot3_obstacle_detection.turtlebot3_obstacle_detection \
22 | import Turtlebot3ObstacleDetection
23 |
24 |
25 | def main(args=None):
26 | rclpy.init(args=args)
27 | turtlebot3_obstacle_detection = Turtlebot3ObstacleDetection()
28 | rclpy.spin(turtlebot3_obstacle_detection)
29 |
30 | turtlebot3_obstacle_detection.destroy_node()
31 | rclpy.shutdown()
32 |
33 |
34 | if __name__ == '__main__':
35 | main()
36 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_client/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_client/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_client/main.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Ryan Shim, Gilbert
18 |
19 | import rclpy
20 |
21 | from turtlebot3_example.turtlebot3_patrol_client.turtlebot3_patrol_client \
22 | import Turtlebot3PatrolClient
23 |
24 |
25 | def main(args=None):
26 | rclpy.init(args=args)
27 | turtlebot3_patrol_client = Turtlebot3PatrolClient()
28 | rclpy.spin(turtlebot3_patrol_client)
29 |
30 |
31 | if __name__ == '__main__':
32 | main()
33 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/main.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Ryan Shim, Gilbert
18 |
19 | import rclpy
20 |
21 | from turtlebot3_example.turtlebot3_patrol_server.turtlebot3_patrol_server \
22 | import Turtlebot3PatrolServer
23 |
24 |
25 | def main(args=None):
26 | rclpy.init(args=args)
27 | turtlebot3_patrol_server = Turtlebot3PatrolServer()
28 | rclpy.spin(turtlebot3_patrol_server)
29 |
30 | turtlebot3_patrol_server.destroy()
31 | rclpy.shutdown()
32 |
33 |
34 | if __name__ == '__main__':
35 | main()
36 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_patrol_server/turtlebot3_path.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Ryan Shim, Gilbert
18 |
19 | from geometry_msgs.msg import Twist
20 |
21 |
22 | class Turtlebot3Path():
23 |
24 | def drive_circle(radius, velocity):
25 | twist = Twist()
26 | linear_velocity = velocity # unit: m/s
27 | angular_velocity = linear_velocity / radius # unit: rad/s
28 |
29 | twist.linear.x = linear_velocity
30 | twist.angular.z = angular_velocity
31 |
32 | return twist
33 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/main.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Ryan Shim, Gilbert
18 |
19 | import rclpy
20 |
21 | from turtlebot3_example.turtlebot3_position_control.turtlebot3_position_control \
22 | import Turtlebot3PositionControl
23 |
24 |
25 | def main(args=None):
26 | rclpy.init(args=args)
27 | turtlebot3_position_control = Turtlebot3PositionControl()
28 | rclpy.spin(turtlebot3_position_control)
29 |
30 | turtlebot3_position_control.destroy_node()
31 | rclpy.shutdown()
32 |
33 |
34 | if __name__ == '__main__':
35 | main()
36 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_example/turtlebot3_example/turtlebot3_position_control/turtlebot3_path.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Ryan Shim, Gilbert
18 |
19 | import math
20 |
21 | from geometry_msgs.msg import Twist
22 |
23 |
24 | class Turtlebot3Path():
25 |
26 | def turn(angle, angular_velocity, step):
27 | twist = Twist()
28 |
29 | if math.fabs(angle) > 0.01: # 0.01 is small enough value
30 | if angle >= math.pi:
31 | twist.angular.z = -angular_velocity
32 | elif math.pi > angle and angle >= 0:
33 | twist.angular.z = angular_velocity
34 | elif 0 > angle and angle >= -math.pi:
35 | twist.angular.z = -angular_velocity
36 | elif angle > -math.pi:
37 | twist.angular.z = angular_velocity
38 | else:
39 | step += 1
40 |
41 | return twist, step
42 |
43 | def go_straight(distance, linear_velocity, step):
44 | twist = Twist()
45 |
46 | if distance > 0.01: # 0.01 is small enough value
47 | twist.linear.x = linear_velocity
48 | else:
49 | step += 1
50 |
51 | return twist, step
52 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_navigation2/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # Set minimum required version of cmake, project name and compile options
3 | ################################################################################
4 | cmake_minimum_required(VERSION 3.5)
5 | project(turtlebot3_navigation2)
6 |
7 | ################################################################################
8 | # Find ament packages and libraries for ament and system dependencies
9 | ################################################################################
10 | find_package(ament_cmake REQUIRED)
11 |
12 | ################################################################################
13 | # Install
14 | ################################################################################
15 | install(
16 | DIRECTORY launch map param rviz
17 | DESTINATION share/${PROJECT_NAME}
18 | )
19 |
20 | ################################################################################
21 | # Macro for ament package
22 | ################################################################################
23 | ament_package()
24 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_navigation2/map/turtlebot3_world.pgm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_navigation2/map/turtlebot3_world.pgm
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_navigation2/map/turtlebot3_world.yaml:
--------------------------------------------------------------------------------
1 | image: turtlebot3_world.pgm
2 | resolution: 0.050000
3 | origin: [-10.000000, -10.000000, 0.000000]
4 | negate: 0
5 | occupied_thresh: 0.65
6 | free_thresh: 0.196
7 |
8 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_navigation2/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_navigation2
5 | 2.1.1
6 |
7 | ROS 2 launch scripts for navigation2
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Pyo
16 | ament_cmake
17 | nav2_bringup
18 |
19 | ament_cmake
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 | Changelog for package turtlebot3_node
3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 |
5 | 2.1.1 (2021-01-06)
6 | ------------------
7 | * turtlebot3.repos updated to target correct distro
8 | * galactic-devel branch created
9 | * Eloquent EOL
10 | * Contributors: Ashe Kim, Will Son
11 |
12 | 2.1.0 (2020-06-22)
13 | ------------------
14 | * ROS 2 Foxy Fitzroy supported
15 | * ROS 2 Eloquent Elusor supported
16 | * Contributors: Ryan, Ashe
17 |
18 | 2.0.1 (2019-09-05)
19 | ------------------
20 | * Updated the CHANGELOG and version to release binary packages
21 | * Modified dependency packages
22 | * Contributors: Darby Lim, Pyo
23 |
24 | 2.0.0 (2019-08-20)
25 | ------------------
26 | * Supported ROS 2 Dashing Diademata
27 | * Updated the CHANGELOG and version to release binary packages
28 | * Fixed ROS2 dependencies and library install `#454 `_
29 | * Fixed scan rate to 5hz `#418 `_
30 | * Initialized joint states variables `#411 `_
31 | * Contributors: Matt Hansen, Emerson Knapp, Darby Lim, Pyo
32 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/devices.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__DEVICES__DEVICES_HPP_
18 | #define TURTLEBOT3_NODE__DEVICES__DEVICES_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | #include "turtlebot3_node/control_table.hpp"
27 | #include "turtlebot3_node/dynamixel_sdk_wrapper.hpp"
28 |
29 | namespace robotis
30 | {
31 | namespace turtlebot3
32 | {
33 | extern const ControlTable extern_control_table;
34 | namespace devices
35 | {
36 | class Devices
37 | {
38 | public:
39 | explicit Devices(
40 | std::shared_ptr & nh,
41 | std::shared_ptr & dxl_sdk_wrapper)
42 | : nh_(nh),
43 | dxl_sdk_wrapper_(dxl_sdk_wrapper)
44 | {
45 | }
46 |
47 | virtual void command(const void * request, void * response) = 0;
48 |
49 | protected:
50 | std::shared_ptr nh_;
51 | std::shared_ptr dxl_sdk_wrapper_;
52 | rclcpp::QoS qos_ = rclcpp::QoS(rclcpp::ServicesQoS());
53 | };
54 | } // namespace devices
55 | } // namespace turtlebot3
56 | } // namespace robotis
57 | #endif // TURTLEBOT3_NODE__DEVICES__DEVICES_HPP_
58 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/motor_power.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__DEVICES__MOTOR_POWER_HPP_
18 | #define TURTLEBOT3_NODE__DEVICES__MOTOR_POWER_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 |
25 | #include "turtlebot3_node/devices/devices.hpp"
26 |
27 | namespace robotis
28 | {
29 | namespace turtlebot3
30 | {
31 | namespace devices
32 | {
33 | class MotorPower : public Devices
34 | {
35 | public:
36 | static void request(
37 | rclcpp::Client::SharedPtr client,
38 | std_srvs::srv::SetBool::Request req);
39 |
40 | explicit MotorPower(
41 | std::shared_ptr & nh,
42 | std::shared_ptr & dxl_sdk_wrapper,
43 | const std::string & server_name = "motor_power");
44 |
45 | void command(const void * request, void * response) override;
46 |
47 | private:
48 | rclcpp::Service::SharedPtr srv_;
49 | };
50 | } // namespace devices
51 | } // namespace turtlebot3
52 | } // namespace robotis
53 | #endif // TURTLEBOT3_NODE__DEVICES__MOTOR_POWER_HPP_
54 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/reset.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__DEVICES__RESET_HPP_
18 | #define TURTLEBOT3_NODE__DEVICES__RESET_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 |
25 | #include "turtlebot3_node/devices/devices.hpp"
26 |
27 | namespace robotis
28 | {
29 | namespace turtlebot3
30 | {
31 | namespace devices
32 | {
33 | class Reset : public Devices
34 | {
35 | public:
36 | static void request(
37 | rclcpp::Client::SharedPtr client,
38 | std_srvs::srv::Trigger::Request req);
39 |
40 | explicit Reset(
41 | std::shared_ptr & nh,
42 | std::shared_ptr & dxl_sdk_wrapper,
43 | const std::string & server_name = "reset");
44 |
45 | void command(const void * request, void * response) override;
46 |
47 | private:
48 | rclcpp::Service::SharedPtr srv_;
49 | };
50 | } // namespace devices
51 | } // namespace turtlebot3
52 | } // namespace robotis
53 | #endif // TURTLEBOT3_NODE__DEVICES__RESET_HPP_
54 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/devices/sound.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__DEVICES__SOUND_HPP_
18 | #define TURTLEBOT3_NODE__DEVICES__SOUND_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 |
25 | #include "turtlebot3_node/devices/devices.hpp"
26 |
27 | namespace robotis
28 | {
29 | namespace turtlebot3
30 | {
31 | namespace devices
32 | {
33 | class Sound : public Devices
34 | {
35 | public:
36 | static void request(
37 | rclcpp::Client::SharedPtr client,
38 | turtlebot3_msgs::srv::Sound::Request req);
39 |
40 | explicit Sound(
41 | std::shared_ptr & nh,
42 | std::shared_ptr & dxl_sdk_wrapper,
43 | const std::string & server_name = "sound");
44 |
45 | void command(const void * request, void * response) override;
46 |
47 | private:
48 | rclcpp::Service::SharedPtr srv_;
49 | };
50 | } // namespace devices
51 | } // namespace turtlebot3
52 | } // namespace robotis
53 | #endif // TURTLEBOT3_NODE__DEVICES__SOUND_HPP_
54 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/diff_drive_controller.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__DIFF_DRIVE_CONTROLLER_HPP_
18 | #define TURTLEBOT3_NODE__DIFF_DRIVE_CONTROLLER_HPP_
19 |
20 | #include
21 |
22 | #include
23 |
24 | #include "turtlebot3_node/odometry.hpp"
25 |
26 | namespace robotis
27 | {
28 | namespace turtlebot3
29 | {
30 | class DiffDriveController : public rclcpp::Node
31 | {
32 | public:
33 | explicit DiffDriveController(const float wheel_seperation, const float wheel_radius);
34 | virtual ~DiffDriveController() {}
35 |
36 | private:
37 | std::shared_ptr nh_;
38 | std::unique_ptr odometry_;
39 | };
40 | } // namespace turtlebot3
41 | } // namespace robotis
42 | #endif // TURTLEBOT3_NODE__DIFF_DRIVE_CONTROLLER_HPP_
43 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/battery_state.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__SENSORS__BATTERY_STATE_HPP_
18 | #define TURTLEBOT3_NODE__SENSORS__BATTERY_STATE_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 |
25 | #include "turtlebot3_node/sensors/sensors.hpp"
26 |
27 | namespace robotis
28 | {
29 | namespace turtlebot3
30 | {
31 | namespace sensors
32 | {
33 | class BatteryState : public Sensors
34 | {
35 | public:
36 | explicit BatteryState(
37 | std::shared_ptr & nh,
38 | const std::string & topic_name = "battery_state");
39 |
40 | void publish(
41 | const rclcpp::Time & now,
42 | std::shared_ptr & dxl_sdk_wrapper) override;
43 |
44 | private:
45 | rclcpp::Publisher::SharedPtr pub_;
46 | };
47 | } // namespace sensors
48 | } // namespace turtlebot3
49 | } // namespace robotis
50 | #endif // TURTLEBOT3_NODE__SENSORS__BATTERY_STATE_HPP_
51 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/imu.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__SENSORS__IMU_HPP_
18 | #define TURTLEBOT3_NODE__SENSORS__IMU_HPP_
19 |
20 | #include
21 | #include
22 |
23 | #include
24 | #include
25 |
26 | #include "turtlebot3_node/sensors/sensors.hpp"
27 |
28 | namespace robotis
29 | {
30 | namespace turtlebot3
31 | {
32 | namespace sensors
33 | {
34 | class Imu : public Sensors
35 | {
36 | public:
37 | explicit Imu(
38 | std::shared_ptr & nh,
39 | const std::string & imu_topic_name = "imu",
40 | const std::string & mag_topic_name = "magnetic_field",
41 | const std::string & frame_id = "imu_link");
42 |
43 | void publish(
44 | const rclcpp::Time & now,
45 | std::shared_ptr & dxl_sdk_wrapper) override;
46 |
47 | private:
48 | rclcpp::Publisher::SharedPtr imu_pub_;
49 | rclcpp::Publisher::SharedPtr mag_pub_;
50 | };
51 | } // namespace sensors
52 | } // namespace turtlebot3
53 | } // namespace robotis
54 | #endif // TURTLEBOT3_NODE__SENSORS__IMU_HPP_
55 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/joint_state.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__SENSORS__JOINT_STATE_HPP_
18 | #define TURTLEBOT3_NODE__SENSORS__JOINT_STATE_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 |
25 | #include "turtlebot3_node/sensors/sensors.hpp"
26 |
27 | namespace robotis
28 | {
29 | namespace turtlebot3
30 | {
31 | namespace sensors
32 | {
33 | constexpr uint8_t JOINT_NUM = 2;
34 |
35 | // ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#goal-velocity104
36 | constexpr double RPM_TO_MS = 0.229 * 0.0034557519189487725;
37 |
38 | // 0.087890625[deg] * 3.14159265359 / 180 = 0.001533981f
39 | constexpr double TICK_TO_RAD = 0.001533981;
40 |
41 | class JointState : public Sensors
42 | {
43 | public:
44 | explicit JointState(
45 | std::shared_ptr & nh,
46 | const std::string & topic_name = "joint_states",
47 | const std::string & frame_id = "base_link");
48 |
49 | void publish(
50 | const rclcpp::Time & now,
51 | std::shared_ptr & dxl_sdk_wrapper) override;
52 |
53 | private:
54 | rclcpp::Publisher::SharedPtr pub_;
55 | };
56 | } // namespace sensors
57 | } // namespace turtlebot3
58 | } // namespace robotis
59 | #endif // TURTLEBOT3_NODE__SENSORS__JOINT_STATE_HPP_
60 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/sensor_state.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__SENSORS__SENSOR_STATE_HPP_
18 | #define TURTLEBOT3_NODE__SENSORS__SENSOR_STATE_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 |
25 | #include "turtlebot3_node/sensors/sensors.hpp"
26 |
27 | namespace robotis
28 | {
29 | namespace turtlebot3
30 | {
31 | namespace sensors
32 | {
33 | class SensorState : public Sensors
34 | {
35 | public:
36 | explicit SensorState(
37 | std::shared_ptr & nh,
38 | const std::string & topic_name = "sensor_state",
39 | const bool & bumper_forward = false,
40 | const bool & bumper_backward = false,
41 | const bool & cliff = false,
42 | const bool & sonar = false,
43 | const bool & illumination = false);
44 |
45 | void publish(
46 | const rclcpp::Time & now,
47 | std::shared_ptr & dxl_sdk_wrapper) override;
48 |
49 | private:
50 | rclcpp::Publisher::SharedPtr pub_;
51 |
52 | bool bumper_forward_;
53 | bool bumper_backward_;
54 | bool cliff_;
55 | bool sonar_;
56 | bool illumination_;
57 | };
58 | } // namespace sensors
59 | } // namespace turtlebot3
60 | } // namespace robotis
61 | #endif // TURTLEBOT3_NODE__SENSORS__SENSOR_STATE_HPP_
62 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/include/turtlebot3_node/sensors/sensors.hpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #ifndef TURTLEBOT3_NODE__SENSORS__SENSORS_HPP_
18 | #define TURTLEBOT3_NODE__SENSORS__SENSORS_HPP_
19 |
20 | #include
21 |
22 | #include
23 | #include
24 | #include
25 |
26 | #include "turtlebot3_node/control_table.hpp"
27 | #include "turtlebot3_node/dynamixel_sdk_wrapper.hpp"
28 |
29 | namespace robotis
30 | {
31 | namespace turtlebot3
32 | {
33 | extern const ControlTable extern_control_table;
34 | namespace sensors
35 | {
36 | class Sensors
37 | {
38 | public:
39 | explicit Sensors(
40 | std::shared_ptr & nh,
41 | const std::string & frame_id = "")
42 | : nh_(nh),
43 | frame_id_(frame_id)
44 | {
45 | }
46 |
47 | virtual void publish(
48 | const rclcpp::Time & now,
49 | std::shared_ptr & dxl_sdk_wrapper) = 0;
50 |
51 | protected:
52 | std::shared_ptr nh_;
53 | std::string frame_id_;
54 | rclcpp::QoS qos_ = rclcpp::QoS(rclcpp::KeepLast(10));
55 | };
56 | } // namespace sensors
57 | } // namespace turtlebot3
58 | } // namespace robotis
59 | #endif // TURTLEBOT3_NODE__SENSORS__SENSORS_HPP_
60 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_node
5 | 2.1.1
6 |
7 | TurtleBot3 driver node that include diff drive controller, odometry and tf node
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Pyo
16 | ament_cmake
17 | dynamixel_sdk
18 | geometry_msgs
19 | message_filters
20 | nav_msgs
21 | rclcpp
22 | rcutils
23 | sensor_msgs
24 | std_msgs
25 | std_srvs
26 | tf2
27 | tf2_ros
28 | turtlebot3_msgs
29 |
30 | ament_cmake
31 |
32 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/param/burger.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_node:
2 | ros__parameters:
3 |
4 | opencr:
5 | id: 200
6 | baud_rate: 1000000
7 | protocol_version: 2.0
8 |
9 | wheels:
10 | separation: 0.160
11 | radius: 0.033
12 |
13 | motors:
14 | profile_acceleration_constant: 214.577
15 |
16 | # [rev/min2]
17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration
18 | profile_acceleration: 0.0
19 |
20 | sensors:
21 | bumper_1: false
22 | bumper_2: false
23 |
24 | illumination: false
25 |
26 | ir: false
27 |
28 | sonar: false
29 |
30 | diff_drive_controller:
31 | ros__parameters:
32 |
33 | odometry:
34 | publish_tf: true
35 | use_imu: true
36 | frame_id: "odom"
37 | child_frame_id: "base_footprint"
38 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/param/waffle.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_node:
2 | ros__parameters:
3 |
4 | opencr:
5 | id: 200
6 | baud_rate: 1000000
7 | protocol_version: 2.0
8 |
9 | wheels:
10 | separation: 0.287
11 | radius: 0.033
12 |
13 | motors:
14 | profile_acceleration_constant: 214.577
15 |
16 | # [rev/min2]
17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration
18 | profile_acceleration: 0.0
19 |
20 | sensors:
21 | bumper_1: false
22 | bumper_2: false
23 |
24 | illumination: false
25 |
26 | ir: false
27 |
28 | sonar: false
29 |
30 | diff_drive_controller:
31 | ros__parameters:
32 |
33 | odometry:
34 | publish_tf: true
35 | use_imu: true
36 | frame_id: "odom"
37 | child_frame_id: "base_footprint"
38 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/param/waffle_pi.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_node:
2 | ros__parameters:
3 |
4 | opencr:
5 | id: 200
6 | baud_rate: 1000000
7 | protocol_version: 2.0
8 |
9 | wheels:
10 | separation: 0.287
11 | radius: 0.033
12 |
13 | motors:
14 | profile_acceleration_constant: 214.577
15 |
16 | # [rev/min2]
17 | # ref) http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#profile-acceleration
18 | profile_acceleration: 0.0
19 |
20 | sensors:
21 | bumper_1: false
22 | bumper_2: false
23 |
24 | illumination: false
25 |
26 | ir: false
27 |
28 | sonar: false
29 |
30 | diff_drive_controller:
31 | ros__parameters:
32 |
33 | odometry:
34 | publish_tf: true
35 | use_imu: true
36 | frame_id: "odom"
37 | child_frame_id: "base_footprint"
38 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/src/diff_drive_controller.cpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #include "turtlebot3_node/diff_drive_controller.hpp"
18 |
19 | #include
20 |
21 | using robotis::turtlebot3::DiffDriveController;
22 |
23 | DiffDriveController::DiffDriveController(const float wheel_seperation, const float wheel_radius)
24 | : Node("diff_drive_controller", rclcpp::NodeOptions().use_intra_process_comms(true))
25 | {
26 | nh_ = std::shared_ptr<::rclcpp::Node>(this, [](::rclcpp::Node *) {});
27 |
28 | odometry_ = std::make_unique(
29 | nh_,
30 | wheel_seperation,
31 | wheel_radius);
32 |
33 | RCLCPP_INFO(this->get_logger(), "Run!");
34 | }
35 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_node/src/sensors/battery_state.cpp:
--------------------------------------------------------------------------------
1 | // Copyright 2019 ROBOTIS CO., LTD.
2 | //
3 | // Licensed under the Apache License, Version 2.0 (the "License");
4 | // you may not use this file except in compliance with the License.
5 | // You may obtain a copy of the License at
6 | //
7 | // http://www.apache.org/licenses/LICENSE-2.0
8 | //
9 | // Unless required by applicable law or agreed to in writing, software
10 | // distributed under the License is distributed on an "AS IS" BASIS,
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | // See the License for the specific language governing permissions and
13 | // limitations under the License.
14 | //
15 | // Author: Darby Lim
16 |
17 | #include "turtlebot3_node/sensors/battery_state.hpp"
18 |
19 | #include
20 | #include
21 | #include
22 |
23 | using robotis::turtlebot3::sensors::BatteryState;
24 |
25 | BatteryState::BatteryState(
26 | std::shared_ptr & nh,
27 | const std::string & topic_name)
28 | : Sensors(nh)
29 | {
30 | pub_ = nh->create_publisher(topic_name, this->qos_);
31 |
32 | RCLCPP_INFO(nh_->get_logger(), "Succeeded to create battery state publisher");
33 | }
34 |
35 | void BatteryState::publish(
36 | const rclcpp::Time & now,
37 | std::shared_ptr & dxl_sdk_wrapper)
38 | {
39 | auto msg = std::make_unique();
40 |
41 | msg->header.stamp = now;
42 |
43 | msg->design_capacity = 1.8f;
44 |
45 | msg->voltage = 0.01f * dxl_sdk_wrapper->get_data_from_device(
46 | extern_control_table.battery_voltage.addr,
47 | extern_control_table.battery_voltage.length);
48 |
49 | msg->percentage = 0.01f * dxl_sdk_wrapper->get_data_from_device(
50 | extern_control_table.battery_percentage.addr,
51 | extern_control_table.battery_percentage.length);
52 |
53 | msg->voltage <= 7.0 ? msg->present = false : msg->present = true;
54 |
55 | pub_->publish(std::move(msg));
56 | }
57 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_teleop
5 | 2.1.1
6 |
7 | Teleoperation node using keyboard for TurtleBot3.
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3
13 | https://github.com/ROBOTIS-GIT/turtlebot3/issues
14 | Darby Lim
15 | Pyo
16 | geometry_msgs
17 | rclpy
18 |
19 | ament_python
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/resource/turtlebot3_teleop:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/resource/turtlebot3_teleop
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/setup.cfg:
--------------------------------------------------------------------------------
1 | [develop]
2 | script-dir=$base/lib/turtlebot3_teleop
3 | [install]
4 | install-scripts=$base/lib/turtlebot3_teleop
5 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import find_packages
2 | from setuptools import setup
3 |
4 | package_name = 'turtlebot3_teleop'
5 |
6 | setup(
7 | name=package_name,
8 | version='2.1.1',
9 | packages=find_packages(exclude=[]),
10 | data_files=[
11 | ('share/ament_index/resource_index/packages', ['resource/' + package_name]),
12 | ('share/' + package_name, ['package.xml']),
13 | ],
14 | install_requires=[
15 | 'setuptools',
16 | ],
17 | zip_safe=True,
18 | author='Darby Lim',
19 | author_email='thlim@robotis.com',
20 | maintainer='Will Son',
21 | maintainer_email='willson@robotis.com',
22 | keywords=['ROS'],
23 | classifiers=[
24 | 'Intended Audience :: Developers',
25 | 'License :: OSI Approved :: Apache Software License',
26 | 'Programming Language :: Python',
27 | 'Topic :: Software Development',
28 | ],
29 | description=(
30 | 'Teleoperation node using keyboard for TurtleBot3.'
31 | ),
32 | license='Apache License, Version 2.0',
33 | tests_require=['pytest'],
34 | entry_points={
35 | 'console_scripts': [
36 | 'teleop_keyboard = turtlebot3_teleop.script.teleop_keyboard:main'
37 | ],
38 | },
39 | )
40 |
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__pycache__/__init__.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/__pycache__/__init__.cpython-38.pyc
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__init__.py
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/__init__.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/__init__.cpython-38.pyc
--------------------------------------------------------------------------------
/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/teleop_keyboard.cpython-38.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3/turtlebot3_teleop/turtlebot3_teleop/script/__pycache__/teleop_keyboard.cpython-38.pyc
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/.travis.yml:
--------------------------------------------------------------------------------
1 | services:
2 | - docker
3 |
4 | language:
5 | - generic
6 |
7 | notifications:
8 | email:
9 | on_success: change
10 | on_failure: always
11 | recipients:
12 | - willson@robotis.com
13 |
14 | branches:
15 | only:
16 | - ros2
17 | - ros2-devel
18 | - dashing-devel
19 | - eloquent-devel
20 | - foxy-devel
21 |
22 | install:
23 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci
24 |
25 | matrix:
26 | include:
27 | - script: .ros2ci/travis.bash dashing
28 | - script: .ros2ci/travis.bash eloquent
29 | - script: .ros2ci/travis.bash nightly
30 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 | Changelog for package turtlebot3_msgs
3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 |
5 | 2.2.1 (2020-06-18)
6 | ------------------
7 | * ROS 2 Eloquent Elusor supported
8 | * ROS 2 Foxy Fitzroy supported
9 | * Contributors: Will Son
10 |
11 | 2.2.0 (2019-09-24)
12 | ------------------
13 | * Added action file for turtlebot example package
14 | * Contributors: Ryan Shim
15 |
16 | 2.1.0 (2019-08-20)
17 | ------------------
18 | * Supported ROS 2 Dashing Diademata
19 | * Added Sound service file
20 | * Contributors: Darby Lim, Pyo
21 |
22 | 2.0.0 (2018-07-26)
23 | ------------------
24 | * Added support for ROS 2
25 | * Contributors: Vineet Ghatge
26 |
27 | 1.0.0 (2018-05-29)
28 | ------------------
29 | * Added sensors
30 | * Deleted unused msg and srv
31 | * Separated turtlebot3_msgs and applications related messages
32 | * Merged pull request `#10 `_ `#9 `_ `#8 `_ `#7 `_
33 | * Contributors: Darby Lim, Gilbert, Pyo
34 |
35 | 0.1.5 (2018-03-14)
36 | ------------------
37 | * Modified CMakeLists.txt and package for package format v2
38 | * Contributors: Pyo
39 |
40 | 0.1.4 (2018-03-10)
41 | ------------------
42 | * Added torque msg in sensor_msgs
43 | * Added Sound.msg
44 | * Deleted motorpower.msg in cmakelists
45 | * Contributors: Darby Lim, Pyo
46 |
47 | 0.1.3 (2017-04-24)
48 | ------------------
49 | * Added msg package for TB3
50 | * Contributors: Pyo
51 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # Set minimum required version of cmake, project name and compile options
3 | ################################################################################
4 | cmake_minimum_required(VERSION 3.5)
5 | project(turtlebot3_msgs)
6 |
7 | if(NOT CMAKE_CXX_STANDARD)
8 | set(CMAKE_CXX_STANDARD 14)
9 | endif()
10 |
11 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
12 | add_compile_options(-Wall -Wextra -Wpedantic)
13 | endif()
14 |
15 | ################################################################################
16 | # Find ament packages and libraries for ament and system dependencies
17 | ################################################################################
18 | find_package(action_msgs REQUIRED)
19 | find_package(ament_cmake REQUIRED)
20 | find_package(rosidl_default_generators REQUIRED)
21 | find_package(std_msgs REQUIRED)
22 |
23 | ################################################################################
24 | # Setup for python modules and scripts
25 | ################################################################################
26 |
27 | ################################################################################
28 | # Declare ROS messages, services and actions
29 | ################################################################################
30 | set(msg_files
31 | "msg/SensorState.msg"
32 | "msg/Sound.msg"
33 | "msg/VersionInfo.msg"
34 | )
35 |
36 | set(srv_files
37 | "srv/Sound.srv"
38 | "srv/Dqn.srv"
39 | )
40 |
41 | set(action_files
42 | "action/Patrol.action"
43 | )
44 |
45 | rosidl_generate_interfaces(${PROJECT_NAME}
46 | ${msg_files}
47 | ${srv_files}
48 | ${action_files}
49 | DEPENDENCIES action_msgs std_msgs
50 | ADD_LINTER_TESTS
51 | )
52 | ament_export_dependencies(rosidl_default_runtime)
53 | ament_package()
54 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/action/Patrol.action:
--------------------------------------------------------------------------------
1 | # Goal
2 | float32 radius
3 | ---
4 | # Result
5 | bool success
6 | ---
7 | # Feedback
8 | float32 left_time
9 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/msg/SensorState.msg:
--------------------------------------------------------------------------------
1 | ########################################
2 | # CONSTANTS
3 | ########################################
4 | # Bumper states (states are combined, when multiple bumpers are pressed)
5 | uint8 BUMPER_FORWARD = 1
6 | uint8 BUMPER_BACKWARD = 2
7 |
8 | # Cliff sensor states (states are combined, when multiple cliff sensors are triggered)
9 | uint8 CLIFF = 1
10 |
11 | # Sonar sensor states (states are combined, when multiple sonar sensors are triggered)
12 | uint8 SONAR = 1
13 |
14 | # Illumination sensor (states are combined, when multiple illumination sensors are triggered)
15 | uint8 ILLUMINATION = 1
16 |
17 | # Button states (states are combined, when multiple buttons are pressed)
18 | uint8 BUTTON0 = 1
19 | uint8 BUTTON1 = 2
20 |
21 | # Motor errors
22 | uint8 ERROR_LEFT_MOTOR = 1
23 | uint8 ERROR_RIGHT_MOTOR = 2
24 |
25 | # Motor torque
26 | uint8 TORQUE_ON = 1
27 | uint8 TORQUE_OFF = 2
28 |
29 | ########################################
30 | # Messages
31 | ########################################
32 | std_msgs/Header header
33 | uint8 bumper
34 | float32 cliff
35 | float32 sonar
36 | float32 illumination
37 | uint8 led
38 | uint8 button
39 | bool torque
40 | int32 left_encoder # (-2,147,483,648 ~ 2,147,483,647)
41 | int32 right_encoder # (-2,147,483,648 ~ 2,147,483,647)
42 | float32 battery
43 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/msg/Sound.msg:
--------------------------------------------------------------------------------
1 | ########################################
2 | # CONSTANTS
3 | ########################################
4 | uint8 OFF = 0
5 | uint8 ON = 1
6 | uint8 LOW_BATTERY = 2
7 | uint8 ERROR = 3
8 | uint8 BUTTON1 = 4
9 | uint8 BUTTON2 = 5
10 |
11 | ########################################
12 | # Messages
13 | ########################################
14 | uint8 value
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/msg/VersionInfo.msg:
--------------------------------------------------------------------------------
1 | ########################################
2 | # Messages
3 | ########################################
4 | string hardware # .. : hardware version of Turtlebot3 (ex. 2017.05.23)
5 | string firmware # .. : firmware version of OpenCR
6 | string software # .. : software version of Turtlebot3 ROS packages
7 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_msgs
5 | 2.2.1
6 |
7 | Message and service types: custom messages and services for TurtleBot3 packages for ROS2
8 |
9 | Apache 2.0
10 | Pyo
11 | Darby Lim
12 | Gilbert
13 | Vineet Ghatge
14 | Ryan Shim
15 | Will Son
16 | http://wiki.ros.org/turtlebot3_msgs
17 | http://turtlebot3.robotis.com
18 | https://github.com/ROBOTIS-GIT/turtlebot3_msgs
19 | https://github.com/ROBOTIS-GIT/turtlebot3_msgs/issues
20 | ament_cmake
21 | rosidl_default_generators
22 | action_msgs
23 | builtin_interfaces
24 | std_msgs
25 | rosidl_default_runtime
26 | ament_lint_common
27 | rosidl_interface_packages
28 |
29 | ament_cmake
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/srv/Dqn.srv:
--------------------------------------------------------------------------------
1 | uint8 action
2 | bool init
3 | ---
4 | float32[] state
5 | float32 reward
6 | bool done
7 |
--------------------------------------------------------------------------------
/src/turtlebot3_msgs/srv/Sound.srv:
--------------------------------------------------------------------------------
1 | ########################################
2 | # CONSTANTS
3 | ########################################
4 | # uint8 OFF = 0
5 | # uint8 ON = 1
6 | # uint8 LOW_BATTERY = 2
7 | # uint8 ERROR = 3
8 | # uint8 BUTTON1 = 4
9 | # uint8 BUTTON2 = 5
10 |
11 | uint8 value
12 | ---
13 | bool success
14 | string message
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/.travis.yml:
--------------------------------------------------------------------------------
1 | services:
2 | - docker
3 |
4 | language:
5 | - generic
6 |
7 | notifications:
8 | email:
9 | on_success: change
10 | on_failure: always
11 | recipients:
12 | - willson@robotis.com
13 |
14 | branches:
15 | only:
16 | - ros2
17 | - ros2-devel
18 | - foxy-devel
19 |
20 | install:
21 | - git clone --quiet --depth 1 https://github.com/ROBOTIS-GIT/ros2ci.git .ros2ci
22 |
23 | matrix:
24 | include:
25 | - script: .ros2ci/travis.bash foxy
26 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Any contribution that you make to this repository will
2 | be under the Apache 2 License, as dictated by that
3 | [license](http://www.apache.org/licenses/LICENSE-2.0.html):
4 |
5 | ~~~
6 | 5. Submission of Contributions. Unless You explicitly state otherwise,
7 | any Contribution intentionally submitted for inclusion in the Work
8 | by You to the Licensor shall be under the terms and conditions of
9 | this License, without any additional terms or conditions.
10 | Notwithstanding the above, nothing herein shall supersede or modify
11 | the terms of any separate license agreement you may have executed
12 | with Licensor regarding such Contributions.
13 | ~~~
14 |
15 | Contributors must sign-off each commit by adding a `Signed-off-by: ...`
16 | line to commit messages to certify that they have the right to submit
17 | the code they are contributing to the project according to the
18 | [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
19 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_fake_node/launch/rviz2.launch.py:
--------------------------------------------------------------------------------
1 | # Copyright 2019 Open Source Robotics Foundation, Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 |
15 | # Author: Ryan Shim
16 |
17 | import os
18 |
19 | from ament_index_python.packages import get_package_share_directory
20 | from launch import LaunchDescription
21 | from launch_ros.actions import Node
22 |
23 |
24 | def generate_launch_description():
25 | rviz_config_dir = os.path.join(
26 | get_package_share_directory('turtlebot3_fake_node'),
27 | 'rviz',
28 | 'model.rviz'
29 | )
30 |
31 | return LaunchDescription([
32 | Node(
33 | package='rviz2',
34 | executable='rviz2',
35 | name='rviz2',
36 | arguments=['-d', rviz_config_dir],
37 | output='screen'),
38 | ])
39 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_fake_node/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_fake_node
5 | 2.2.1
6 |
7 | Package for TurtleBot3 fake node. With this package, simple tests can be done without a robot.
8 | You can do simple tests using this package on rviz without real robots.
9 |
10 | Will Son
11 | Apache 2.0
12 | http://turtlebot3.robotis.com
13 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations
14 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues
15 | Pyo
16 | Darby Lim
17 | Ryan Shim
18 | ament_cmake
19 | geometry_msgs
20 | nav_msgs
21 | rclcpp
22 | sensor_msgs
23 | tf2
24 | tf2_msgs
25 | turtlebot3_msgs
26 | robot_state_publisher
27 |
28 | ament_cmake
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_fake_node/param/burger.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_fake_node:
2 | ros__parameters:
3 | wheels:
4 | separation: 0.160
5 | radius: 0.033
6 |
7 | joint_states_frame: "base_footprint"
8 | odom_frame: "odom"
9 | base_frame: "base_footprint"
10 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_fake_node/param/waffle.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_fake_node:
2 | ros__parameters:
3 | wheels:
4 | separation: 0.287
5 | radius: 0.033
6 |
7 | joint_states_frame: "base_footprint"
8 | odom_frame: "odom"
9 | base_frame: "base_footprint"
10 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_fake_node/param/waffle_pi.yaml:
--------------------------------------------------------------------------------
1 | turtlebot3_fake_node:
2 | ros__parameters:
3 | wheels:
4 | separation: 0.287
5 | radius: 0.033
6 |
7 | joint_states_frame: "base_footprint"
8 | odom_frame: "odom"
9 | base_frame: "base_footprint"
10 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/launch/robot_state_publisher.launch.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | #
3 | # Copyright 2019 ROBOTIS CO., LTD.
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 | #
17 | # Authors: Darby Lim
18 |
19 | import os
20 |
21 | from ament_index_python.packages import get_package_share_directory
22 | from launch import LaunchDescription
23 | from launch.actions import DeclareLaunchArgument
24 | from launch.substitutions import LaunchConfiguration
25 | from launch_ros.actions import Node
26 |
27 |
28 | def generate_launch_description():
29 | TURTLEBOT3_MODEL = os.environ['TURTLEBOT3_MODEL']
30 |
31 | use_sim_time = LaunchConfiguration('use_sim_time', default='false')
32 | urdf_file_name = 'turtlebot3_' + TURTLEBOT3_MODEL + '.urdf'
33 |
34 | print('urdf_file_name : {}'.format(urdf_file_name))
35 |
36 | urdf = os.path.join(
37 | get_package_share_directory('turtlebot3_description'),
38 | 'urdf',
39 | urdf_file_name)
40 |
41 | return LaunchDescription([
42 | DeclareLaunchArgument(
43 | 'use_sim_time',
44 | default_value='false',
45 | description='Use simulation (Gazebo) clock if true'),
46 |
47 | Node(
48 | package='robot_state_publisher',
49 | executable='robot_state_publisher',
50 | name='robot_state_publisher',
51 | output='screen',
52 | parameters=[{'use_sim_time': use_sim_time}],
53 | arguments=[urdf]),
54 | ])
55 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/materials/scripts/course.material:
--------------------------------------------------------------------------------
1 | material course
2 | {
3 | technique
4 | {
5 | pass
6 | {
7 | texture_unit
8 | {
9 | texture course.png
10 | }
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/materials/textures/course.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/materials/textures/course.png
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | course
5 | 1.0
6 | model.sdf
7 |
8 | Gilbert
9 | kkjong@robotis.com
10 |
11 |
12 |
13 | A simple textured ground plane
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/course/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 |
7 |
8 |
9 | 0 0 1
10 | 4 4
11 |
12 |
13 |
14 |
15 |
16 | 100
17 | 50
18 |
19 |
20 |
21 |
22 |
23 | false
24 |
25 |
26 | 0 0 1
27 | 4 4
28 |
29 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/ground/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ground
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Ground.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/ground/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 -0.1 0 0 0
5 | 1
6 |
7 |
8 |
9 |
10 | 8 8 0.01
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | 10
26 |
27 |
28 |
29 |
30 | 10 10 0.01
31 |
32 |
33 |
34 |
38 |
39 |
40 | 0
41 | 0
42 | 1
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/lights/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | lights
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Ground.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/lights/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -0.948146 0.604519 1 0 -0 0
5 | 0.5 0.5 0.5 1
6 | 0.1 0.1 0.1 1
7 |
8 | 20
9 | 0.5
10 | 0.01
11 | 0.001
12 |
13 | 0
14 | 0 0 -1
15 |
16 |
17 | 1.63854 1.69565 1 0 -0 0
18 | 0.5 0.5 0.5 1
19 | 0.1 0.1 0.1 1
20 |
21 | 20
22 | 0.5
23 | 0.01
24 | 0.001
25 |
26 | 0
27 | 0 0 -1
28 |
29 |
30 | 0.42 -3.31 1 0 -0 0
31 | 0.5 0.5 0.5 1
32 | 0.1 0.1 0.1 1
33 |
34 | 20
35 | 0.5
36 | 0.01
37 | 0.001
38 |
39 | 0
40 | 0 0 -1
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_autorace
5 | 1.0
6 |
7 |
8 | Ryan Shim
9 | jhshim@robotis.com
10 |
11 |
12 |
13 | Turtlebot3 Autorace
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/materials/scripts/traffic_bar.material:
--------------------------------------------------------------------------------
1 | material traffic_bar
2 | {
3 | technique
4 | {
5 | pass
6 | {
7 | texture_unit
8 | {
9 | texture traffic_bar.png
10 | }
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/materials/textures/traffic_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/materials/textures/traffic_bar.png
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | traffic_bar_down
5 | 1.0
6 | traffic_bar_down.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Model with links of simple shapes and texture applied.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_down/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 | -1.8 0.6 0.15 0 0 0
7 |
8 |
9 |
10 | 0.3 0.01 0.023
11 |
12 |
13 |
14 |
15 |
16 |
17 | 0.3 0.01 0.023
18 |
19 |
20 |
21 |
26 |
27 |
28 |
29 | 1
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/materials/scripts/traffic_bar.material:
--------------------------------------------------------------------------------
1 | material traffic_bar
2 | {
3 | technique
4 | {
5 | pass
6 | {
7 | texture_unit
8 | {
9 | texture traffic_bar.png
10 | }
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/materials/textures/traffic_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/materials/textures/traffic_bar.png
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | traffic_bar_up
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Model with links of simple shapes and texture applied.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_bar_up/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 0 0 0 0
5 |
6 |
7 | -1.95 0.6 0.3 0 1.57 0
8 |
9 |
10 | 0.3 0.01 0.023
11 |
12 |
13 |
14 |
15 | -1.95 0.6 0.3 0 1.57 0
16 |
17 |
18 | 0.3 0.01 0.023
19 |
20 |
21 |
22 |
27 |
28 |
29 |
30 | 1
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_green/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | traffic_light_green
4 | 1.0
5 | model.sdf
6 |
7 | Gilbert
8 | kkjong@robotis.com
9 |
10 | The traffic green light.
11 |
12 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_green/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 0 0 -0 -1.5708
5 |
6 |
7 | 1.3 -1.95 0.05 0 0 0
8 |
9 |
10 | 0.015
11 |
12 |
13 |
14 |
15 | 1.3 -1.95 0.05 0 0 0
16 |
17 |
18 | 0.015
19 |
20 |
21 |
22 |
26 |
27 |
28 | 0
29 | 0
30 |
31 | 1
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_red/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | traffic_light_red
4 | 1.0
5 | model.sdf
6 |
7 | Gilbert
8 | kkjong@robotis.com
9 |
10 | The traffic red light.
11 |
12 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_red/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 0 0 -0 -1.5708
5 |
6 |
7 | 1.3 -1.95 0.13 0 0 0
8 |
9 |
10 | 0.015
11 |
12 |
13 |
14 |
15 | 1.3 -1.95 0.13 0 0 0
16 |
17 |
18 | 0.015
19 |
20 |
21 |
22 |
26 |
27 |
28 | 0
29 | 0
30 |
31 | 1
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_yellow/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | traffic_light_yellow
4 | 1.0
5 | model.sdf
6 |
7 | Gilbert
8 | kkjong@robotis.com
9 |
10 | The traffic yellow light.
11 |
12 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_light_yellow/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 0 0 -0 -1.5708
5 |
6 |
7 | 1.3 -1.95 0.09 0 0 0
8 |
9 |
10 | 0.015
11 |
12 |
13 |
14 |
15 | 1.3 -1.95 0.09 0 0 0
16 |
17 |
18 | 0.015
19 |
20 |
21 |
22 |
26 |
27 |
28 | 0
29 | 0
30 |
31 | 1
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/materials/scripts/traffic_parking.material:
--------------------------------------------------------------------------------
1 | material traffic_parking
2 | {
3 | technique
4 | {
5 | pass
6 | {
7 | texture_unit
8 | {
9 | texture traffic_parking.png
10 | }
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/materials/textures/traffic_parking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/materials/textures/traffic_parking.png
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | traffic_parking
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Model with links of simple shapes and texture applied.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_parking/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 | 0 0 0 0 0 0
7 |
8 |
9 |
10 | 0.12 0.025 0.25
11 |
12 |
13 |
14 |
15 |
16 |
17 | 0.12 0.025 0.25
18 |
19 |
20 |
21 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/materials/scripts/traffic_stop.material:
--------------------------------------------------------------------------------
1 | material traffic_stop
2 | {
3 | technique
4 | {
5 | pass
6 | {
7 | texture_unit
8 | {
9 | texture traffic_stop.png
10 | }
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/materials/textures/traffic_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/materials/textures/traffic_stop.png
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | traffic_stop
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Gilbert
10 | kkjong@robotis.com
11 |
12 |
13 |
14 | Model with links of simple shapes and texture applied.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_stop/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | true
5 |
6 | 0 0 0 0 0 0
7 |
8 |
9 |
10 | 0.12 0.025 0.25
11 |
12 |
13 |
14 |
15 |
16 |
17 | 0.12 0.025 0.25
18 |
19 |
20 |
21 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/materials/scripts/tunnel.material:
--------------------------------------------------------------------------------
1 | material traffic_tunnel
2 | {
3 | technique
4 | {
5 | pass
6 | {
7 | texture_unit
8 | {
9 | texture tunnel.png
10 | }
11 | }
12 | }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/materials/textures/tunnel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/materials/textures/tunnel.png
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | traffic_tunnel
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Model with links of simple shapes and texture applied.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/traffic_tunnel/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 0.125 0 0 0
5 |
6 | 0 0 0 0 0 0
7 |
8 |
9 |
10 | 0.12 0.025 0.25
11 |
12 |
13 |
14 |
15 |
16 |
17 | 0.12 0.025 0.25
18 |
19 |
20 |
21 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/tunnel_obstacles/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | tunnel_obstacles
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Tunnel obstacles.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_autorace/tunnel_wall/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | tunnel_wall
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Hyunok Lee
10 | hyunokhyunok@naver.com
11 |
12 |
13 |
14 | Tunnel wall.
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_burger/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TurtleBot3(Burger)
5 | 2.0
6 | model-1_4.sdf
7 | model.sdf
8 |
9 |
10 | Taehun Lim(Darby)
11 | thlim@robotis.com
12 |
13 |
14 |
15 | TurtleBot3 Burger
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | goal_box
4 | 1.0
5 | model.sdf
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/goal_box/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0 0 0 0 -0 -1.5708
5 |
6 |
7 | 0 0 0.0005 0 -0 0
8 |
9 |
10 | 0.3
11 | 0.001
12 |
13 |
14 |
15 |
19 | 1 0 0 1
20 |
21 |
22 | 0 0 0 0 -0 0
23 |
24 | 1
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/inner_walls/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | inner_walls
4 | 1.0
5 | model.sdf
6 |
7 |
8 | Ryan Shim
9 | jhshim@robotis.com
10 |
11 |
12 |
13 | TurtleBot3 DQN World Inner Walls
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | turtlebot3_dqn
4 | 1.0
5 | model.sdf
6 |
7 |
8 | Ryan Shim
9 | jhshim@robotis.com
10 |
11 |
12 |
13 | TurtleBot3 DQN World
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle1/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | obstacle1
4 | 1.0
5 | model.sdf
6 |
7 |
8 | Ryan Shim
9 | jhshim@robotis.com
10 |
11 |
12 |
13 | TurtleBot3 DQN World
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle1/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 0.12
9 | 0.25
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | 0.12
18 | 0.25
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle2/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | obstacle2
4 | 1.0
5 | model.sdf
6 |
7 |
8 | Ryan Shim
9 | jhshim@robotis.com
10 |
11 |
12 |
13 | TurtleBot3 DQN World
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle2/model.sdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 0.12
9 | 0.25
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | 0.12
18 | 0.25
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # CMake
3 | ################################################################################
4 | cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
5 |
6 | ################################################################################
7 | # Packages
8 | ################################################################################
9 | find_package(gazebo REQUIRED)
10 |
11 | ################################################################################
12 | # Build
13 | ################################################################################
14 | link_directories(${GAZEBO_LIBRARY_DIRS})
15 |
16 | include_directories(${GAZEBO_INCLUDE_DIRS})
17 |
18 | list(APPEND CMAKE_CXX_FLAGS "${GAZEBO_CXX_FLAGS}")
19 |
20 | add_library(obstacle1 SHARED obstacle1.cc)
21 | target_link_libraries(obstacle1 ${GAZEBO_LIBRARIES})
22 |
23 | add_library(obstacle2 SHARED obstacle2.cc)
24 | target_link_libraries(obstacle2 ${GAZEBO_LIBRARIES})
25 |
26 | add_library(obstacles SHARED obstacles.cc)
27 | target_link_libraries(obstacles ${GAZEBO_LIBRARIES})
28 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle1.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle1.so
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle2.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacle2.so
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacles.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cocodmdr/turtlebot3_robot_localization_ws/b39db70ac69f5f7eadbee882d8dabd847dd9031e/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacle_plugin/build/libobstacles.so
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_dqn_world/obstacles/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 | obstacles
4 | 1.0
5 | model.sdf
6 |
7 |
8 | Ryan Shim
9 | jhshim@robotis.com
10 |
11 |
12 |
13 | TurtleBot3 DQN World
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_house/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Turtlebot3 House
5 | 1.0
6 | model.sdf
7 |
8 |
9 | Taehun Lim(Darby)
10 | thlim@robotis.com
11 |
12 |
13 |
14 | Turtlebot3 House
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_waffle/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TurtleBot3(Waffle)
5 | 2.0
6 | model.sdf
7 |
8 |
9 | Taehun Lim(Darby)
10 | thlim@robotis.com
11 |
12 |
13 |
14 | TurtleBot3 Waffle
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_waffle_pi/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TurtleBot3(Waffle Pi)
5 | 2.0
6 | model-1_4.sdf
7 | model.sdf
8 |
9 |
10 | Taehun Lim(Darby)
11 | thlim@robotis.com
12 |
13 |
14 |
15 | TurtleBot3 Waffle Pi
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/models/turtlebot3_world/model.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | TurtleBot3 World
5 | 1.0
6 | model-1_4.sdf
7 | model.sdf
8 |
9 |
10 | Taehun Lim(Darby)
11 | thlim@robotis.com
12 |
13 |
14 |
15 | World of TurtleBot3 with ROS symbol
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_gazebo
5 | 2.2.1
6 |
7 | Gazebo simulation package for the TurtleBot3
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations
13 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues
14 | Darby Lim
15 | Pyo
16 | Ryan Shim
17 | ament_cmake
18 | gazebo_ros_pkgs
19 | geometry_msgs
20 | nav_msgs
21 | rclcpp
22 | sensor_msgs
23 | tf2
24 | turtlebot3
25 |
26 | ament_cmake
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/empty_worlds/burger.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | model://turtlebot3_burger
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/empty_worlds/waffle_pi.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | model://turtlebot3_waffle_pi
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_autoraces/waffle.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_autorace
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_waffle
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_autoraces/waffle_pi.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_autorace
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_waffle_pi
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1/burger.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_dqn_world
50 |
51 |
52 |
53 |
54 | 0.0 0.0 0.0 0.0 0.0 0.0
55 | model://turtlebot3_burger
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1/waffle.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_dqn_world
50 |
51 |
52 |
53 |
54 | 0.0 0.0 0.0 0.0 0.0 0.0
55 | model://turtlebot3_waffle
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage1/waffle_pi.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_dqn_world
50 |
51 |
52 |
53 |
54 | 0.0 0.0 0.0 0.0 0.0 0.0
55 | model://turtlebot3_waffle_pi
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2/burger.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_dqn_world
50 |
51 |
52 |
53 |
54 | model://turtlebot3_dqn_world/obstacles
55 |
56 |
57 |
58 | 0.0 0.0 0.0 0.0 0.0 0.0
59 | model://turtlebot3_burger
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2/waffle.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_dqn_world
50 |
51 |
52 |
53 |
54 | model://turtlebot3_dqn_world/obstacles
55 |
56 |
57 |
58 | 0.0 0.0 0.0 0.0 0.0 0.0
59 | model://turtlebot3_waffle
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_dqn_stage2/waffle_pi.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_dqn_world
50 |
51 |
52 |
53 |
54 | model://turtlebot3_dqn_world/obstacles
55 |
56 |
57 |
58 | 0.0 0.0 0.0 0.0 0.0 0.0
59 | model://turtlebot3_waffle_pi
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/burger.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_house
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_burger
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/waffle.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_house
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_waffle
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_houses/waffle_pi.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_house
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_waffle_pi
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_worlds/burger.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_world
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_burger
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3_worlds/waffle_pi.model:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | model://ground_plane
7 |
8 |
9 |
10 | model://sun
11 |
12 |
13 |
14 | false
15 |
16 |
17 |
18 |
19 | 0.319654 -0.235002 9.29441 0 1.5138 0.009599
20 | orbit
21 | perspective
22 |
23 |
24 |
25 |
26 | 1000.0
27 | 0.001
28 | 1
29 |
30 |
31 | quick
32 | 150
33 | 0
34 | 1.400000
35 | 1
36 |
37 |
38 | 0.00001
39 | 0.2
40 | 2000.000000
41 | 0.01000
42 |
43 |
44 |
45 |
46 |
47 | 1
48 |
49 | model://turtlebot3_world
50 |
51 |
52 |
53 |
54 | -2.0 -0.5 0.01 0.0 0.0 0.0
55 | model://turtlebot3_waffle_pi
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_simulations/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5)
2 | project(turtlebot3_simulations)
3 | find_package(ament_cmake REQUIRED)
4 | ament_package()
5 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_simulations/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | turtlebot3_simulations
5 | 2.2.1
6 |
7 | ROS 2 packages for TurtleBot3 simulations
8 |
9 | Will Son
10 | Apache 2.0
11 | http://turtlebot3.robotis.com
12 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations
13 | https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues
14 | Darby Lim
15 | Pyo
16 | Ryan Shim
17 | ament_cmake
18 | turtlebot3_fake_node
19 | turtlebot3_gazebo
20 |
21 | ament_cmake
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/turtlebot3_simulations/turtlebot3_simulations_ci.repos:
--------------------------------------------------------------------------------
1 | repositories:
2 | turtlebot3/turtlebot3:
3 | type: git
4 | url: https://github.com/ROBOTIS-GIT/turtlebot3.git
5 | version: foxy-devel
6 | turtlebot3/turtlebot3_msgs:
7 | type: git
8 | url: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
9 | version: foxy-devel
10 | utils/DynamixelSDK:
11 | type: git
12 | url: https://github.com/ROBOTIS-GIT/DynamixelSDK.git
13 | version: foxy-devel
14 | utils/hls_lfcd_lds_driver:
15 | type: git
16 | url: https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
17 | version: foxy-devel
18 |
--------------------------------------------------------------------------------