https://github.com/gaurang-1402/carr-e-2
🚃Autonomous luggage cart
https://github.com/gaurang-1402/carr-e-2
Last synced: 7 days ago
JSON representation
🚃Autonomous luggage cart
- Host: GitHub
- URL: https://github.com/gaurang-1402/carr-e-2
- Owner: Gaurang-1402
- Created: 2023-01-12T15:08:39.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-06-29T20:57:26.000Z (almost 2 years ago)
- Last Synced: 2025-02-16T22:20:37.399Z (3 months ago)
- Language: Python
- Homepage:
- Size: 1.29 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Carr-E-2
🚃 Autonomous luggage cart
## Basic setup
If stuck with weird errors, run the basic setup again and then attempt the same process.
First, create a folder called dev_ws and clone this repository
```
mkdir dev_ws
cd dev_ws
git clone https://github.com/Gaurang-1402/Carr-E-2
```Now you have to build your ws with colcon
```
colcon build --symlink-install
```
Adding `--symlink-install` makes it so that you don't have to rebuild every time you change urdfs but instead only have to build again if a new urdf file is added.Now, you have to source the setup.bash file
```
source install/setup.bash
```## Running the robot on RVIZ
Open a new terminal and run the robot state publisher
```
ros2 launch carr-e-2 rsp.launch.py
```If everything works well, open a new terminal and run rviz using the configuration created by Gaurang
```
rviz2 -d carr-e-2/config/carr-e-2-rviz-config.rviz
```The wheels need to get continous values. Since this is a simulation we need to provide these values through a joint state publisher gui. Open a new terminal and run
```
ros2 run joint_state_publisher_gui joint_state_publisher_gui
```## Running the robot on Gazebo
Install Gazebo if not done already
```
sudo apt install ros-foxy-gazebo-ros-pkgs
```Open a new terminal and run the robot state publisher
```
ros2 launch carr-e-2 rsp.launch.py use_sim_time:=true
```
We need to provide the ```use_sim_time:=true``` param to make the robot state publisher follow the simulation's time.You can verify this by running
```
ros2 param get /robot_state_publisher use_sim_time
$ Boolean value is: True
```We need to run RVIZ before we run Gazebo so run rviz by using the following command
```
rviz2 -d carr-e-2/config/carr-e-2-gazebo-lidar-config.rviz
```Ensure basic setup is rerun. Now to run Gazebo, open a new terminal and run
```
ros2 launch carr-e-2 launch_sim.launch.py world:=./carr-e-2/worlds/obstacles.world
```A gazebo window will open with the robot correctly placed.
We use a world called "obstacles.world" created by Gaurang by default. But this can be changed.
We can now use teleop to control the movement of the robot by opening a new terminal and running the following command
```
ros2 run teleop_twist_keyboard teleop_twist_keyboard
```We can now control the movement of the robot using keys on the keyboard
## Camera plugins
Install the following packages
```
sudo apt install ros-foxy-image-transport-plugins
sudo apt install ros-foxy-rqt-image-view
```On a new terminal run
```
ros2 run rqt_image_view rqt_image_view
```We need to run RVIZ before we run Gazebo so run rviz by using the following command
```
rviz2 -d carr-e-2/config/carr-e-2-gazebo-camera-config.rviz
```## ROS2 Control
Install the following packages
```
sudo apt install ros-foxy-ros2-control ros-foxy-ros2-controllers ros-foxy-gazebo-ros2-control
```Then run these 2 commands
```
ros2 run controller_manager spawner.py diff_cont
ros2 run controller_manager spawner.py joint_broad
```Finally run the following command to control the robot using the keyboard
```
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/diff_cont/cmd_vel_unstamped
```## Joystick control in Gazebo
Open a new terminal and run
```
ros2 run joy_tester test_joy
```This will help you debug any errors if present. Along with test_joy run this on a new terminal
```
ros2 topic echo joy
```Run the joystick node
```
ros2 launch carr-e-2 joystick.launch.py
```To check cmd_vel, run
```
ros2 topic echo /diff_cont/cmd_vel_unstamped```
## Run SLAM toolbox
Install packages
```
sudo apt install ros-foxy-slam-toolbox
```Then run
```
ros2 launch slam_toolbox online_async_launch.py params_file:=./carr-e-2/config/mapper_params_online_async.yaml use_sim_time:=true
```## Run Nav2
Install packages
```
sudo apt install ros-foxy-navigation2 ros-foxy-nav2-bringup ros-foxy-turtlebot3*
```On 2 different terminals, run map server
```
ros2 run nav2_util lifecycle_bringup map_server
ros2 run nav2_map_server map_server --ros-args -p yaml_filename:=my_map_save.yaml -p use_sim_time:=true
```Running AMCL
```
ros2 run nav2_util lifecycle_bringup amcl
ros2 run nav2_amcl amcl --ros-args -p use_sim_time:=true
```TWIST COMMAND
```
ros2 run twist_mux twist_mux --ros-args --params-file ./carr-e-2/config/twist_mux.yaml -r cmd_vel_out:=diff_cont/cmd_vel_unstamped
```SECOND THING
```
ros2 launch nav2_bringup navigation_launch.py my_map:=./my_map_save.yaml use_sim_time:=true
```# Physical robot
## Testing motors
```
miniterm -e /dev/ttyUSB0 57600
```
```
ros2 run serial_motor_demo driver --ros-args -p serial_port:=/dev/ttyUSB0 -p baud_rate:=57600 -p loop_rate:=30 -p encoder_cpr:=678
```## Testing Lidar
Install rplidar
```
sudo apt install ros-foxy-rplidar-ros
```
Run rplidar node
```
ros2 run rplidar_ros rplidar_composition --ros-args -p serial_port:=/dev/ttyUSB0 -p frame_id:=laser_frame -p angle_compensate:=true -p scan_mode:=Standard
```
Stop or start motor```
ros2 service call /stop_motor std_srvs/srv/Empty {}ros2 service call /start_motor std_srvs/srv/Empty {}
```## Camera
```
sudo apt install libraspberrypi-bin v4l-utils ros-foxy-v4l2-camera```
```
ros2 run v4l2_camera v4l2_camera_node --ros-args -p image_size:="[640,480]" -p camera_frame_id:=camera_link_optical```