为了更好的学习“卓越之星”与“智行”系列产品:
智行-W2U,智行-W4A,智行W2C,智行W2A,智行W3S,我们将上述产品的仿真模型文件开源,传感器参数与安装位置和真实的智行产品保持一致,这样同学们可以使用gazebo模型预习ROS相关知识,调试和学习相关内容,再移植到真机进行优化开发与测试,方便老师和同学们开展进一步的学习。需要注意的是,仿真的环境过于理想,因此仿真平台只可以作为逻辑,通讯等功能的验证,真实的完成任务,调试算法,还是需要在真实设备上解决。
Ubuntu是一个基于Debian的以桌面应用为主的Linux操作系统。它的名字来自非洲南部祖鲁语或科萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观。Ubuntu的目标在于为一般用户提供一个最新同时又相当稳定,主要以自由软件建构而成的操作系统。Ubuntu具有庞大的社区力量支持,用户可以方便地从社区获得帮助。
Ubuntu适用于笔记本电脑、桌面电脑和服务器,特别是为桌面用户提供尽善尽美的使用体验。它几乎包含了所有常用的应用软件,如文字处理、电子邮件、软件开发工具和Web服务等。此外,Ubuntu每6个月会发布一个新版本,以提供最新最强大的软件。
在个人PC上安装Ubuntu系统的方式主要有以下两种:
安装Ubuntu 20.04双系统需要遵循一系列步骤,下面是一个基本的步骤指南:
查看机器的BIOS模式(UEFI或Legacy),通常可以通过Windows系统信息或BIOS设置查看。
为Ubuntu预留硬盘空间。在Windows中,可以通过磁盘管理工具压缩现有分区来创建未分配空间。
下载Ubuntu 20.04的ISO镜像文件。
镜像可选下载地址(请下载20.04版本):
官方下载地址:https://ubuntu.com/download
清华大学开源软件站:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/
阿里云开源软件站:https://mirrors.aliyun.com/ubuntu-releases/
制作一个可启动的USB安装介质。你可以使用工具如Rufus或Etcher,选择对应的ISO镜像和USB驱动器来制作。
插入USB安装介质并重启计算机。
在启动时进入BIOS设置(通常是按F2、F10、DEL或ESC键,具体取决于你的计算机),将启动顺序更改为首先从USB驱动器启动。
保存更改并退出BIOS设置,计算机将从USB安装介质启动。
选择“Install Ubuntu”开始安装过程。
选择语言、键盘布局和时区等选项。
在“Installation type”步骤中,选择“Something else”以进行自定义分区。
创建新的分区用于Ubuntu。你可以创建多个分区(例如,根分区、交换空间和/home分区),或者只创建一个简单的根分区。确保将分区类型设置为适当的Linux文件系统(如ext4)。
选择分区方案并继续安装。
输入你的用户名、计算机名称和密码等信息。
等待安装过程完成。
安装完成后,重启计算机。
在启动时,你可能需要再次进入BIOS设置,将启动顺序更改回硬盘启动,或者选择在启动菜单中选择Ubuntu启动项。
登录Ubuntu,并进行必要的配置和更新。
另外,具体步骤可能会因你的硬件和现有系统设置而有所不同。如果你遇到任何问题,建议查阅Ubuntu官方文档或寻求社区支持。
Ubuntu官方网址如下:
https://www.ubuntu.com
同时,Ubuntu也提供有中文网站,网址为
https://cn.ubuntu.com
您可以在上述网站上找到关于Ubuntu的各种信息,包括下载、文档、社区支持等。
首先,下载VMare,VMare的官网如下所示:https://www.vmware.com,最好下载VMare 17。
其次,下载Ubuntu20.04的镜像,记下安装的路径,后面在安装时会用到此路径。
安装虚拟机:
后续选择默认即可:
点击下一步即可:
选择操作系统为Linux其具体版本为Ubuntu
给虚拟机起名字及指定安装路径:
指定磁盘空间大小及磁盘划分:
点击自定义硬件:
修改网络模式为桥接:
选择Ubuntu镜像:
点击开启虚拟机:
接下来就是继续安装Ubuntu:
直到可以打开Ubuntu界面,安装就完成了。
在Ubuntu系统内打开终端,按照如下方式安装ROS:
首先,安装前建议先将系统源替换成国内源,否则后续安装软件等会非常的慢。
替换方法如下所示:
https://zhuanlan.zhihu.com/p/348186774
ROS官方安装教程:
https://wiki.ros.org/noetic/Installation/Ubuntu
其次,安装ROS在虚拟机上:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ lsb_release -cs main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install ros-noetic-desktop-full
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
根据提示输入指令即可一步步完成安装。
打开一个终端输入roscore,出现下面内容证明安装成功:
打开终端输入
rosrun turtlesim turtlesim_node
出现小乌龟:
ROS安装完成,可以开始使用了。
首先,在你的Ubuntu系统中建立一个工作空间(这里假设为catkin_ws)
mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_init_workspace
cd ~/catkin_ws
catkin_make
然后,将这个包下载到本工作空间编译:
https://gitee.com/bo_chuang_shang_he/zx_description.git
使用下面的指令:
cd catkin_ws/src
git clone https://gitee.com/bo_chuang_shang_he/zx_description.git
cd ..
catkin_make
需要注意的是,要将本工作空间添加到系统环境变量中
gedit ~/.bashrc
增加下面这行:
Ctrl+S保存。
这时我们就可以使用这个包了。
除此之外,我们还要将gazebo模型下载到本地
cd ~/.gazebo/
mkdir -p models
cd ~/.gazebo/models/
wget http://file.ncnynl.com/ros/gazebo_models.txt
wget -i gazebo_models.txt
ls model.tar.g* | xargs -n1 tar xzvf
防止打开gazebo一直卡在加载界面。
然后,需要额外安装一些ros库来帮助使用:
sudo apt-get install ros-noetic-joint-state-controller
sudo apt-get install ros-noetic-effort-controllers
sudo apt-get install ros-noetic-position-controllers
sudo apt-get install ros-noetic-joint-trajectory-controller
sudo apt-get install ros-noetic-controller-manager
sudo apt-get install ros-noetic-gazebo-ros-control
sudo apt-get install ros-noetic-ros-controllers
sudo apt-get install ros-noetic-rqt-joint-trajectory-controller
sudo apt-get install ros-noetic-rqt-controller-manager
sudo apt-get install ros-noetic-gazebo-*
首先,试试打开gazebo的world
roscd zx_description/worlds/
gazebo cloister.world
加载出来了gazebo地图:
打开终端输入:
roslaunch zx_description w2c.launch
w2c平台就出现在了仿真环境中。
如果切换到
roslaunch zx_description w2a.launch
带有5自由度机械臂的w2a直接出现在了屏幕中。
首先,我们要让智行小车动起来。
先按照上面的步骤启动w2c或者w2a。
然后打开终端输入下面的指令:
roscd zx_description/scripts/
chmod a+x chmod a+x zx_teleop.py
ls
赋予我们的运动控制脚本可执行权限,发现这个python脚本变绿了,说明它是可执行的,这样就可以用rosrun来执行这个脚本了。
打开终端输入
rosrun zx_description zx_teleop.py
按照屏幕打印出来的提示即可控制智行小车运动。
i:可以使小车前进;
,:可以使小车后退;
j:可以使小车左转;
l:可以使小车右转;
q/z:小车加速/减速,每按一次加减速10%;
w/x:单独修改线速度;
e/c:单独修改角速度;
当然了,我们控制小车运动主要还是使用/cmd_vel这个topic。
目前可以获得小车的如下信息:
轮式里程计
消息:/odom
打开终端输入
rostopic echo /odom
可以得到上面结果。
激光雷达原始数据
消息:/scan
打开终端输入
rostopic echo /scan
可以得到上面结果。
imu原始数据
消息:/imu
打开终端输入
rostopic echo /scan
可以得到上面结果。
以上数据可以使用,帮助同学们基于智行小车完成自主建图/导航等功能。
首先,启动gazebo并加载我们的w2a模型:
roslaunch zx_description w2a.launch
其次,加载ros官方提供的controller可视化界面,来控制机械臂的几个关节
rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller
选择如下,并点击中间按钮启动控制:
拖拽下面滑条,关节会运动到目标角度:
这样,我们就可以实现对W2A机械臂的关节控制了。
首先安装ros的建图/导航/定位包:
sudo apt-get install ros-noetic-gmapping
sudo apt-get install ros-noetic-navigation
这样可以在您的系统中使用ROS导航定位功能了。
首先启动gazebo和w2c:
roslaunch zx_description w2c.launch
接着启动gmapping建图:
roslaunch zx_description gmapping.launch
可以看到地图出现在rviz中:
使用下面指令启动运动控制完成建图:
rosrun zx_description zx_teleop.py
使用下面指令保存建好的地图:
roslaunch zx_description save_map.launch
地图就保存在了zx_description功能包下的maps文件夹内。
重启仿真,使用下面指令开启自主导航
roslaunch zx_description navigation.launch
这时候看rviz,可以看到:
这时使用2DNavGoal按钮选择一个目标点,W2C机器人可以自主导航过去:
gazebo中的机器人也随之运动到了指定位置:
这样我们就可以使用ros的自主导航功能了。