Package Summary
Tags | No category tags. |
Version | 1.0.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/blackcoffeerobotics/bcr_bot.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2024-11-12 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Gaurav Gupta
- Devanshu Sharma
- Angelo Antu
Authors
New BCR Robot
https://github.com/blackcoffeerobotics/bcr_bot/assets/13151010/0fc570a3-c70c-415b-8222-b9573d5911c8
About
This repository contains a Gazebo and Isaac Sim simulation for a differential drive robot, equipped with an IMU, a depth camera, stereo camera and a 2D LiDAR. The primary contriution of this project is to support multiple ROS and Gazebo distros. Currently, the project supports the following versions -
- ROS Noetic + Gazebo Classic 11 (branch ros1)
- ROS2 Humble + Gazebo Classic 11 (branch ros2)
- ROS2 Humble + Gazebo Fortress (branch ros2)
- ROS2 Humble + Gazebo Harmonic (branch ros2)
- ROS2 Humble + Isaac Sim (branch ros2)
Each of the following sections describes depedencies, build and run instructions for each of the above combinations
Noetic + Classic (Ubuntu 20.04)
Dependencies
In addition to ROS1 Noetic and Gazebo Classic installations, the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Source Build
catkin build --packages-select bcr_bot
Binary Install
To install BCR bot in the binaries:
sudo apt-get install ros-noetic-bcr-bot
Run
To launch the robot in Gazebo,
roslaunch bcr_bot gazebo.launch
To view in rviz,
roslaunch bcr_bot rviz.launch
Configuration
The launch file accepts multiple launch arguments,
roslaunch bcr_bot gazebo.launch
camera_enabled:=True \
two_d_lidar_enabled:=True \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.world \
robot_namespace:="bcr_bot"
Note: To use stereo_image_proc with the stereo images excute following command:
ROS_NAMESPACE=bcr_bot/stereo_camera rosrun stereo_image_proc stereo_image_proc
Humble + Classic (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble and Gazebo Classic installations, we need to manually install gazebo_ros_pkgs (since the same branch supports Classic and Fortress)
sudo apt-get install ros-humble-gazebo-ros-pkgs
Remainder of the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Source Build
colcon build --packages-select bcr_bot
Binary Install
To install BCR bot in the binaries:
sudo apt-get install ros-humble-bcr-bot
Run
To launch the robot in Gazebo,
ros2 launch bcr_bot gazebo.launch.py
To view in rviz,
ros2 launch bcr_bot rviz.launch.py
Configuration
The launch file accepts multiple launch arguments,
ros2 launch bcr_bot gazebo.launch.py \
camera_enabled:=True \
two_d_lidar_enabled:=True \
stereo_camera_enabled:=False \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.sdf \
robot_namespace:="bcr_bot"
Note: To use stereo_image_proc with the stereo images excute following command:
ros2 launch stereo_image_proc stereo_image_proc.launch.py left_namespace:=bcr_bot/stereo_camera/left right_namespace:=bcr_bot/stereo_camera/right
Humble + Fortress (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble and Gazebo Fortress installations, we need to manually install interfaces between ROS2 and Gazebo sim as follows,
sudo apt-get install ros-humble-ros-gz-sim ros-humble-ros-gz-bridge ros-humble-ros-gz-interfaces
Remainder of the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Source Build
colcon build --packages-select bcr_bot
Binary Install
To install BCR bot in the binaries:
sudo apt-get install ros-humble-bcr-bot
Run
To launch the robot in Gazebo,
ros2 launch bcr_bot ign.launch.py
To view in rviz,
ros2 launch bcr_bot rviz.launch.py
Configuration
The launch file accepts multiple launch arguments,
ros2 launch bcr_bot ign.launch.py \
camera_enabled:=True \
stereo_camera_enabled:=False \
two_d_lidar_enabled:=True \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.sdf
Note: To use stereo_image_proc with the stereo images excute following command:
ros2 launch stereo_image_proc stereo_image_proc.launch.py left_namespace:=bcr_bot/stereo_camera/left right_namespace:=bcr_bot/stereo_camera/right
Humble + Harmonic (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble and Gazebo Harmonic installations, we need to manually install interfaces between ROS2 and Gazebo sim as follows,
sudo apt-get install ros-humble-ros-gzharmonic
Remainder of the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Build
colcon build --packages-select bcr_bot
Run
To launch the robot in Gazebo,
ros2 launch bcr_bot gz.launch.py
To view in rviz,
ros2 launch bcr_bot rviz.launch.py
Configuration
The launch file accepts multiple launch arguments,
ros2 launch bcr_bot gz.launch.py \
camera_enabled:=True \
stereo_camera_enabled:=False \
two_d_lidar_enabled:=True \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.sdf
Note:
- To use stereo_image_proc with the stereo images excute following command:
ros2 launch stereo_image_proc stereo_image_proc.launch.py left_namespace:=bcr_bot/stereo_camera/left right_namespace:=bcr_bot/stereo_camera/right
- Harmonic support is not available in the bcr_bot binaries yet.
Warning: gz-harmonic
cannot be installed alongside gazebo-classic (eg. gazebo11) since both use the gz
command line tool.
Humble + Isaac Sim (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble Isaac Sim installation with ROS2 extension is required. Remainder of bcr_bot specific dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Build
colcon build --packages-select bcr_bot
Run
To launch the robot in Isaac Sim:
- Open Isaac Sim and load the
warehouse_scene.usd
orscene.usd
from here. - Add in extra viewports for different camera views.
- Start the Simulation: Run the simulation directly within Isaac Sim.
- The following USDs are included in the package:
-
warehouse_scene.usd
- Warehouse scene with a robot. -
scene.usd
- Scene with a robot in a empty world. -
bcr_bot.usd
- Robot model that can be imported into any scene. -
ActionGraphFull.usd
- Action graph for the robot to publish all the required topics.
-
To view in rviz:
ros2 launch bcr_bot rviz.launch.py
NOTE: The command to run mapping and navigation is common between all versions of gazebo and Isaac sim see here.
Mapping with SLAM Toolbox
SLAM Toolbox is an open-source package designed to map the environment using laser scans and odometry, generating a map for autonomous navigation.
NOTE: The command to run mapping is common between all versions of gazebo.
To start mapping:
ros2 launch bcr_bot mapping.launch.py
Use the teleop twist keyboard to control the robot and map the area:
ros2 run teleop_twist_keyboard teleop_twist_keyboard cmd_vel:=/bcr_bot/cmd_vel
To save the map:
cd src/bcr_bot/config
ros2 run nav2_map_server map_saver_cli -f bcr_map
Using Nav2 with bcr_bot
Nav2 is an open-source navigation package that enables a robot to navigate through an environment easily. It takes laser scan and odometry data, along with the map of the environment, as inputs.
NOTE: The command to run navigation is common between all versions of gazebo and Isaac sim.
To run Nav2 on bcr_bot:
ros2 launch bcr_bot nav2.launch.py
Simulation and Visualization
-
Gz Sim (Ignition Gazebo) (small_warehouse World):
-
Isaac Sim:
-
Rviz (Depth camera) (small_warehouse World):
Changelog for package bcr_bot
1.0.2 (2024-04-02)
- Setting Gazebo resource paths through launch files
- Modified launch files to dynamically spawn bcr_bot
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_index_python | |
launch | |
launch_ros | |
robot_state_publisher | |
xacro | |
ament_cmake_gtest | |
ament_lint_auto | |
ament_lint_common |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged bcr_bot at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 0.0.2 |
License | Apache License 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/blackcoffeerobotics/bcr_bot.git |
VCS Type | git |
VCS Version | ros1 |
Last Updated | 2024-06-24 |
Dev Status | DEVELOPED |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Gaurav Gupta
- Devanshu Sharma
Authors
New BCR Robot
https://github.com/blackcoffeerobotics/bcr_bot/assets/13151010/0fc570a3-c70c-415b-8222-b9573d5911c8
About
This repository contains a Gazebo simulation for a differential drive robot, equipped with an IMU, a depth camera, stereo camera and a 2D LiDAR. The primary contriution of this project is to support multiple ROS and Gazebo distros. Currently, the project supports the following versions -
- ROS Noetic + Gazebo Classic 11 (branch ros1)
- ROS2 Humble + Gazebo Classic 11 (branch ros2)
- ROS2 Humble + Gazebo Fortress (branch ros2)
- ROS2 Humble + Gazebo Harmonic (branch ros2)
Each of the following sections describes depedencies, build and run instructions for each of the above combinations
Noetic + Classic (Ubuntu 20.04)
Dependencies
In addition to ROS1 Noetic and Gazebo Classic installations, the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Source Build
catkin build --packages-select bcr_bot
Binary Install
To install BCR bot in the binaries:
sudo apt-get install ros-noetic-bcr-bot
Run
To launch the robot in Gazebo,
roslaunch bcr_bot gazebo.launch
To view in rviz,
roslaunch bcr_bot rviz.launch
Configuration
The launch file accepts multiple launch arguments,
roslaunch bcr_bot gazebo.launch
camera_enabled:=True \
two_d_lidar_enabled:=True \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.world \
robot_namespace:="bcr_bot"
Note: To use stereo_image_proc with the stereo images excute following command:
ROS_NAMESPACE=bcr_bot/stereo_camera rosrun stereo_image_proc stereo_image_proc
Humble + Classic (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble and Gazebo Classic installations, we need to manually install gazebo_ros_pkgs (since the same branch supports Classic and Fortress)
sudo apt-get install ros-humble-gazebo-ros-pkgs
Remainder of the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Source Build
colcon build --packages-select bcr_bot
Binary Install
To install BCR bot in the binaries:
sudo apt-get install ros-humble-bcr-bot
Run
To launch the robot in Gazebo,
ros2 launch bcr_bot gazebo.launch.py
To view in rviz,
ros2 launch bcr_bot rviz.launch.py
Configuration
The launch file accepts multiple launch arguments,
ros2 launch bcr_bot gazebo.launch.py \
camera_enabled:=True \
two_d_lidar_enabled:=True \
stereo_camera_enabled:=False \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.sdf \
robot_namespace:="bcr_bot"
Note: To use stereo_image_proc with the stereo images excute following command:
ros2 launch stereo_image_proc stereo_image_proc.launch.py left_namespace:=bcr_bot/stereo_camera/left right_namespace:=bcr_bot/stereo_camera/right
Humble + Fortress (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble and Gazebo Fortress installations, we need to manually install interfaces between ROS2 and Gazebo sim as follows,
sudo apt-get install ros-humble-ros-gz-sim ros-humble-ros-gz-bridge ros-humble-ros-gz-interfaces
Remainder of the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Source Build
colcon build --packages-select bcr_bot
Binary Install
To install BCR bot in the binaries:
sudo apt-get install ros-humble-bcr-bot
Run
To launch the robot in Gazebo,
ros2 launch bcr_bot ign.launch.py
To view in rviz,
ros2 launch bcr_bot rviz.launch.py
Configuration
The launch file accepts multiple launch arguments,
ros2 launch bcr_bot ign.launch.py \
camera_enabled:=True \
stereo_camera_enabled:=False \
two_d_lidar_enabled:=True \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.sdf
Note: To use stereo_image_proc with the stereo images excute following command:
ros2 launch stereo_image_proc stereo_image_proc.launch.py left_namespace:=bcr_bot/stereo_camera/left right_namespace:=bcr_bot/stereo_camera/right
Humble + Harmonic (Ubuntu 22.04)
Dependencies
In addition to ROS2 Humble and Gazebo Harmonic installations, we need to manually install interfaces between ROS2 and Gazebo sim as follows,
sudo apt-get install ros-humble-ros-gzharmonic
Remainder of the dependencies can be installed with rosdep
# From the root directory of the workspace. This will install everything mentioned in package.xml
rosdep install --from-paths src --ignore-src -r -y
Build
colcon build --packages-select bcr_bot
Run
To launch the robot in Gazebo,
ros2 launch bcr_bot gz.launch.py
To view in rviz,
ros2 launch bcr_bot rviz.launch.py
Configuration
The launch file accepts multiple launch arguments,
ros2 launch bcr_bot gz.launch.py \
camera_enabled:=True \
stereo_camera_enabled:=False \
two_d_lidar_enabled:=True \
position_x:=0.0 \
position_y:=0.0 \
orientation_yaw:=0.0 \
odometry_source:=world \
world_file:=small_warehouse.sdf
Note:
- To use stereo_image_proc with the stereo images excute following command:
ros2 launch stereo_image_proc stereo_image_proc.launch.py left_namespace:=bcr_bot/stereo_camera/left right_namespace:=bcr_bot/stereo_camera/right
- Harmonic support is not available in the bcr_bot binaries yet.
Warning: gz-harmonic
cannot be installed alongside gazebo-classic (eg. gazebo11) since both use the gz
command line tool.
Simulation and Visualization
-
Gz Sim (Ignition Gazebo) (small_warehouse World):
-
Rviz (Depth camera) (small_warehouse World):
Changelog for package bcr_bot
0.0.2 (2024-04-03)
- Setting Gazebo resource paths through launch files
- Modified launch files to dynamically spawn bcr_bot
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- launch/rviz.launch
-
- rviz_config [default: entire_setup.rviz]
- two_d_lidar_enabled [default: true]
- camera_enabled [default: true]
- launch/bcr_bot_spawn.launch
-
- two_d_lidar_enabled [default: true]
- camera_enabled [default: true]
- stereo_camera_enabled [default: false]
- wheel_odom_topic [default: odom]
- publish_wheel_odom_tf [default: true]
- conveyor_enabled [default: false]
- ground_truth_frame [default: map]
- robot_namespace [default: ]
- position_x [default: 0.0]
- position_y [default: 0.0]
- orientation_yaw [default: 0.0]
- odometry_source [default: world]
- launch/gazebo.launch
-
- world_name [default: $(find bcr_bot)/worlds/small_warehouse.world]
- gazebo_gui_enabled [default: true]
- two_d_lidar_enabled [default: true]
- camera_enabled [default: true]
- stereo_camera_enabled [default: false]
- wheel_odom_topic [default: odom]
- publish_wheel_odom_tf [default: true]
- conveyor_enabled [default: false]
- ground_truth_frame [default: map]
- robot_namespace [default: ]
- position_x [default: 0.0]
- position_y [default: 0.0]
- orientation_yaw [default: 0.0]
- odometry_source [default: world]