ROS 2 Humble Hawksbill 之 f1tenth gym

举报
zhangrelay 发表于 2022/06/28 23:33:55 2022/06/28
【摘要】 之前关于ROS1的博文链接如下: 蓝桥ROS之f1tenth简单PID沿墙跑起来(Python) 那么,在ros2 humble下效果如何呢? 地图为:levine 地图为:Spielberg_map 错误与对策:  : 注意环境正确配置。 : 注意坐标系或tf是否配置正确。 ...

之前关于ROS1的博文链接如下:

蓝桥ROS之f1tenth简单PID沿墙跑起来(Python)


那么,在ros2 humble下效果如何呢?

地图为:levine


地图为:Spielberg_map


错误与对策: 

注意环境正确配置。

注意坐标系或tf是否配置正确。


过程全记录: 


  
  1. 695 cd ros_ws/
  2. 696 unzip f1tenth_gym_ros-main.zip
  3. 697 colcon build
  4. 698 ls
  5. 699 rm -rf build/
  6. 700 rm -rf install/
  7. 701 rm -rf log/
  8. 702 cd f1tenth_gym_ros-main/
  9. 703 ls
  10. 704 colcon build
  11. 705 source install/setup.sh
  12. 706 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  13. 707 sudo apt install ros-humble-nav2-lifecycle-manager
  14. 708 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  15. 709 sudo apt install ros-humble-nav2-map-server
  16. 710 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  17. 711 sudo apt install ros-humble-nav2-map-server
  18. 712 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  19. 713 sudo apt install tmux
  20. 714 tmux
  21. 715 cd src/maps/
  22. 716 pwd
  23. 717 cd ..
  24. 718 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  25. 719 sudo apt install ros-humble-ackermann-msgs
  26. 720 sudo apt install ros-humble-launch-ros
  27. 721 sudo apt install ros-humble-nav-msgs
  28. 722 sudo apt install ros-humble-joint-state-publisher
  29. 723 sudo apt install ros-humble-xacro
  30. 724 sudo apt install ros-humble-lifecycle
  31. 725 sudo apt install ros-humble-nav2-lifecycle-manager
  32. 726 sudo apt install ros-humble-teleop-twist-keyboard
  33. 727 colcon build
  34. 728 source install/setup.sh
  35. 729 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  36. 730 cd ros_ws/
  37. 731 cd f1tenth_gym_ros-main/
  38. 732 ls
  39. 733 rosdep install -i --from-path src
  40. 734 sudo apt install python3-rosdep2
  41. 735 rosdep install -i --from-path src
  42. 736 rosdep update
  43. 737 sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple rosdepc
  44. 738 rosdep update
  45. 739 sudo rosdepc init
  46. 740 rosdep install -i --from-path src
  47. 741 colcon build
  48. 742 source install/setup.sh
  49. 743 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  50. 744 sudo apt install --fix-missing
  51. 745 rviz2
  52. 746 gedit
  53. 747 sudo apt install libeigen3-dev
  54. 748 sudo apt install libeigen3-dev tmux
  55. 749 cd ros_ws/
  56. 750 unzip f1tenth_gym-main.zip
  57. 751 cd f1tenth_gym-main/
  58. 752 pip3 install -e .
  59. 753 pip3 install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
  60. 754 gedit
  61. 755 gedti
  62. 756 gedit
  63. 757 glxgears
  64. 758 rviz2
  65. 759 ls
  66. 760 cd ros_ws/
  67. 761 ls
  68. 762 cd f1tenth_gym-main/
  69. 763 ls
  70. 764 cd examples/
  71. 765 ls
  72. 766 cd ..
  73. 767 ls
  74. 768 gedit README.md
  75. 769 rviz2
  76. 770 ls
  77. 771 cd ros_ws/
  78. 772 ls
  79. 773 cd f1tenth_gym-main/
  80. 774 ls
  81. 775 gedit README.md
  82. 776 cd examples/
  83. 777 ls
  84. 778 python3 waypoint_follow.py
  85. 779 cd ..
  86. 780 ls
  87. 781 cd ..
  88. 782 ls
  89. 783 cd f1tenth_gym_ros-main/
  90. 784 ls
  91. 785 colcon build
  92. 786 source install/setup.sh
  93. 787 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  94. 788 cd ..
  95. 789 ls
  96. 790 cd f1tenth_gym
  97. 791 cd ..
  98. 792 cd ros_ws/
  99. 793 ls
  100. 794 cd f1tenth_gym_ros/
  101. 795 ls
  102. 796 rm -rf build/
  103. 797 rm -rf install/
  104. 798 rm -rf log/
  105. 799 colcon build
  106. 800 source install/setup.sh
  107. 801 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  108. 802 colcon build
  109. 803 source install/setup.sh
  110. 804 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  111. 805 history
  112. 806 ros2 launch f1tenth_gym_ros gym_bridge_launch.py
  113. 807 source ros_ws/f1tenth_gym_ros/install/setup.sh
  114. 808 ros2 launch f1tenth_gym_ros gym_bridge_launch.py

 


测试一下:

 

启动键盘遥控:

 


左转

 

右转  

 


 

官方文档如下:

官方推荐docker

# F1TENTH gym environment ROS2 communication bridge
This is a containerized ROS communication bridge for the F1TENTH gym environment that turns it into a simulation in ROS2.

# Installation

**Supported System:**

- Ubuntu (tested on 20.04) with an NVIDIA gpu and nvidia-docker2 support
- Windows 10, macOS, and Ubuntu without an NVIDIA gpu (using noVNC)

This installation guide will be split into instruction for systems with or without an NVIDIA gpu.


## With an NVIDIA gpu:

**Install the following dependencies:**

- **Docker** Follow the instructions [here](https://docs.docker.com/install/linux/docker-ce/ubuntu/) to install Docker. A short tutorial can be found [here](https://docs.docker.com/get-started/) if you're not familiar with Docker. If you followed the post-installation steps you won't have to prepend your docker and docker-compose commands with sudo.
- **nvidia-docker2**, follow the instructions [here](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) if you have a support GPU. It is also possible to use Intel integrated graphics to forward the display, see details instructions from the Rocker repo. If you are on windows with an NVIDIA GPU, you'll have to use WSL (Windows Subsystem for Linux). Please refer to the guide [here](https://developer.nvidia.com/cuda/wsl), [here](https://docs.nvidia.com/cuda/wsl-user-guide/index.html), and [here](https://dilililabs.com/zh/blog/2021/01/26/deploying-docker-with-gpu-support-on-windows-subsystem-for-linux/).
- **rocker** [https://github.com/osrf/rocker](https://github.com/osrf/rocker). This is a tool developed by OSRF to run Docker images with local support injected. We use it for GUI forwarding. If you're on Windows, WSL should also support this.

**Installing the simulation:**

1. Clone this repo
2. Build the docker image by:
```bash
$ cd f1tenth_gym_ros
$ docker build -t f1tenth_gym_ros -f Dockerfile .
```
3. To run the containerized environment, start a docker container by running the following. (example showned here with nvidia-docker support). By running this, the current directory that you're in (should be `f1tenth_gym_ros`) is mounted in the container at `/sim_ws/src/f1tenth_gym_ros`. Which means that the changes you make in the repo on the host system will also reflect in the container.
```bash
$ rocker --nvidia --x11 --volume .:/sim_ws/src/f1tenth_gym_ros -- f1tenth_gym_ros
```

## Without an NVIDIA gpu:

**Install the following dependencies:**

If your system does not support nvidia-docker2, noVNC will have to be used to forward the display.
- Again you'll need **Docker**. Follow the instruction from above.
- Additionally you'll need **docker-compose**. Follow the instruction [here](https://docs.docker.com/compose/install/) to install docker-compose.

**Installing the simulation:**

1. Clone this repo 
2. Build the docker image by:
```bash
$ cd f1tenth_gym_ros
$ docker build -t f1tenth_gym_ros -f Dockerfile .
```
3. Bringup the novnc container and the sim container with docker-compose:
```bash
$ docker-compose up
``` 
4. In a separate terminal, run the following, and you'll have the a bash session in the simulation container. `tmux` is available for convenience.
```bash
$ docker exec -it f1tenth_gym_ros_sim_1 /bin/bash
```
5. In your browser, navigate to [http://localhost:8080/vnc.html](http://localhost:8080/vnc.html), you should see the noVNC logo with the connect button. Click the connect button to connect to the session.

# Launching the Simulation

1. `tmux` is included in the contianer, so you can create multiple bash sessions in the same terminal.
2. To launch the simulation, make sure you source both the ROS2 setup script and the local workspace setup script. Run the following in the bash session from the container:
```bash
$ source /opt/ros/foxy/setup.bash
$ source install/local_setup.bash
$ ros2 launch f1tenth_gym_ros gym_bridge_launch.py
```
A rviz window should pop up showing the simulation either on your host system or in the browser window depending on the display forwarding you chose.

You can then run another node by creating another bash session in `tmux`.

# Configuring the simulation
- The configuration file for the simulation is at `f1tenth_gym_ros/config/sim.yaml`.
- Topic names and namespaces can be configured but is recommended to leave uncahnged.
- The map can be changed via the `map_path` parameter. You'll have to use the full path to the map file in the container. The map follows the ROS convention. It is assumed that the image file and the `yaml` file for the map are in the same directory with the same name. See the note below about mounting a volume to see where to put your map file.
- The `num_agent` parameter can be changed to either 1 or 2 for single or two agent racing.
- The ego and opponent starting pose can also be changed via parameters, these are in the global map coordinate frame.

The entire directory of the repo is mounted to a workspace `/sim_ws/src` as a package. All changes made in the repo on the host system will also reflect in the container. After changing the configuration, run `colcon build` again in the container workspace to make sure the changes are reflected.

# Topics published by the simulation

In **single** agent:

`/scan`: The ego agent's laser scan

`/ego_racecar/odom`: The ego agent's odometry

`/map`: The map of the environment

A `tf` tree is also maintained.

In **two** agents:

In addition to the topics available in the single agent scenario, these topics are also available:

`/opp_scan`: The opponent agent's laser scan

`/ego_racecar/opp_odom`: The opponent agent's odometry for the ego agent's planner

`/opp_racecar/odom`: The opponent agents' odometry

`/opp_racecar/opp_odom`: The ego agent's odometry for the opponent agent's planner

# Topics subscribed by the simulation

In **single** agent:

`/drive`: The ego agent's drive command via `AckermannDriveStamped` messages

`/initalpose`: This is the topic for resetting the ego's pose via RViz's 2D Pose Estimate tool. Do **NOT** publish directly to this topic unless you know what you're doing.

TODO: kb teleop topics

In **two** agents:

In addition to all topics in the single agent scenario, these topics are also available:

`/opp_drive`: The opponent agent's drive command via `AckermannDriveStamped` messages

`/goal_pose`: This is the topic for resetting the opponent agent's pose via RViz's 2D Goal Pose tool. Do **NOT** publish directly to this topic unless you know what you're doing.

# Keyboard Teleop

The keyboard teleop node from `teleop_twist_keyboard` is also installed as part of the simulation's dependency. To enable keyboard teleop, set `kb_teleop` to `True` in `sim.yaml`. After launching the simulation, in another terminal, run:
```bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
```
Then, press `i` to move forward, `u` and `o` to move forward and turn, `,` to move backwards, `m` and `.` to move backwards and turn, and `k` to stop in the terminal window running the teleop node.

# Developing and creating your own agent in ROS 2

There are multiple ways to launch your own agent to control the vehicles.

- The first one is creating a new package for your agent in the `/sim_ws` workspace inside the sim container. After launch the simulation, launch the agent node in another bash session while the sim is running.
- The second one is to create a new ROS 2 container for you agent node. Then create your own package and nodes inside. Launch the sim container and the agent container both. With default networking configurations for `docker`, the behavior is to put The two containers on the same network, and they should be able to discover and talk to each other on different topics. If you're using noVNC, create a new service in `docker-compose.yml` for your agent node. You'll also have to put your container on the same network as the sim and novnc containers.


文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/125505421

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。