win系统下安装 Linux 双系统教程
【系统名称】: Linux 【系统大小】: 1.82G 【系统版本】: 18.04.1 【安装环境】: win10 【下载方式】:
- 百度网盘: https://pan.baidu.com/s/15-4W5HhduVRqLa-gUxJgCw
提取码:48y9 - 镜像下载地址: https://ubuntu.com/download/desktop
此处给出下载 18.04 版本的方法
点击Download下载20.04.2.0 LTS版本,如果想下载18.04版本点击Download下方。 选择【ubuntu 18.04 LTS (Bionic Beaver)】。 选择【64-bit PC (AMD64) desktop image】。
一、制作 U 盘启动
提前准备一个空 U 盘(请提前备份 U 盘里面的资料,因为后面操作要格式化)
-
下载【UltralSO】
- 百度网盘:https://pan.baidu.com/s/13GlP7jPD1OiRvoSGEN8Tkg
提取码:8671 -
解压文件,打开解压文件夹,鼠标右击【UltralSO_9.7.1.3519_cn】选择以【管理员身份运行】。 -
安装完成后,点击【结束】。 -
点击输入注册码:输入注册名【Guanjiu】,输入注册码【A06C-83A7-701D-6CFC】,点击【确定】。 -
插入U盘(4G以上),双击桌面【UltralSO】图标启动软件。 -
点击【文件】,选择【打开】。 -
选择下载后的【ubuntu-18.04.1-desktop-amd64】,点击【打开】。 -
回到【UltralSO】界面,菜单栏选择【启动】,选择【写入镜像】。 -
在界面下方点击【写入】,之后选择【是】。 -
【刻录成功】,退出软件。
二、磁盘分区
- 下载【DiskGenius】
- 百度网盘:https://pan.baidu.com/s/1yA_JuXg0WMZsIQfTamETdg
提取码:dx68 - 打开解压后的文件夹,双击运行【DiskGeniusLoad】。
- 鼠标右击一个磁盘(可选择自己容量较大的一个磁盘),选择【新建分区】。
下图所示的是已经完成分区的情况,所以一开始安装时与下图不符也不要worry。
- 分配新建分区的容量(不少于20G,推荐分配更多的内存到Linux系统中,我自己分配了50G的容量),点击【开始】。
- 点击【是】。
- 分区完成,点击【完成】。
三、安装系统
- 重启电脑,选择电脑从介质(U盘)启动(由于电脑型号不同同,设置方法不同,提供以下两种方法)。
- 方法一、开机画面出现后,立刻按本机型的U盘启动【快捷键】(各主流机型快捷键如下图)选择自己的【U盘英文名称】即可启动。
- 方法二、进入电脑Bios设置U盘为第一启动项(当方法一无法选择U盘启动时,需用此方法进行设置),不同类型的机器进入BIOS按键和设置方法均不同(建议自行搜索对应的电脑型号设置教程),总体来说就是在boot里面设置U盘为第一启动项,设置后按F10保存,重启电脑自动从U盘启动。
- 双击【安装ubuntu】。
- 然后一路yes,直到看到以下界面,选择【其他选项】。
- 选取空余分区,也就是从内存最大的【free】分区开始选取,开始分区,最终分区情况及内存分布为下图标有【unknown】的位置。
- 注意【efi】【swap】【/】分区时为【logical】分区,【/home】为【primary】分区。
- 内存分配【efi】150MB、【swap】8000MB、【/】15000MB、【/home】剩下的全部内存都分给它。
- 点击【install】安装。
- 【地域】随便选,【设置用户】,一定要记住【用户名】和【密码】。
- 安装完成
重启电脑后就可以发现有ubuntu和Windows的选择菜单了。
Linux系统下安装ROS
官方教程地址:http://wiki.ros.org/melodic/Installation/Ubuntu
- 点击屏幕左下角,在弹出的图标界面中选择【软件和更新】
- 点击【下载自】下拉框,从其他站点选择
- 选择aliyun服务器,并点击【关闭】,会要求输入密码进行认证,认证完之后会弹出窗口,点击【重新载入】。
安装过程:
- 打开终端,快捷方式:【Ctrl+Shift+T】
- 输入以下命令行:
添加ROS软件源
官方镜像
$sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
(上面可能会报错,报错可以换一个源)
$sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
添加密钥
$sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv- key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
安装ROS
sudo apt update
sudo apt install ros-melodic-desktop-full
初始化rosdep
sudo rosdep init
rosdep update
设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装ros install
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
至此,完成 ROS 软件的安装。通过在终端输入 roscore 指令可以验证软件是否安装完成。
工作空间的搭建
mkdir -p ~/catkin_ws/src //创建带有src 子文件夹的catkin_ws 文件夹
cd ~/catkin_ws/src //进入 src
catkin_init_workspace //工作空间初始化
cd ~/catkin_ws
catkin_make //编译器指令,通过该指令编译src下所有功能包源码,结果放入build 和 devel 文件夹下
catkin_make install //建立安装空间
source ~/catkin_ws/devel/setup.bash
vi ~/.bashrc
退出如图所示的配置界面后,添加一句 source 命令,将环境变量配置进入 bash 系统中。至此,环境变量的配置已完成。
source ~/.bashrc
创建功能包
创建功能包的指令
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
depend为依赖
eg:
创建一个名为learning_communication 的功能包。首先进入代码空间, 使用如下指令创建功能包。
cd ~/catkin_ws/src
catkin_create_pkg learning_communication srd_msgs rospy cpp
创建完成后,代码空间 src 便会产生该功能包,然后回到工作空间的根目录下进行编译。
cd ~/catkin_ws
catkin_make
小海龟示例
roscore //启动ROS Master
rosrun turtlesim turtlesim_node //启动小海龟仿真器
rosrun turtlesim turtle_teleop_key //启动海龟节点控制器
查看话题列表
rosnode list
发布话题消息
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"
//可以设置小海龟的位置坐标与其行动角度
发布服务请求
rosservice call /spawn "x: 5.0
y: 5.0
theta: 0.0
name: 'turtle2'"
话题记录(举例:对小海龟的运动进行记录,类似拍了个视频)
rosbag record -a -O cmd_record
话题复现(举例:把上面录制的运动轨迹进行复现)
rosbag play cmd_record.bag
RIVIZ初次使用
cd ~/catkin_ws
catkin_create_pkg using_markers roscpp visualization_msgs
touch using_markers/src/basic_shapes.cpp
- 将代码复制到cpp文件或者使用gedit命令书写进文件夹
#include <ros/ros.h>
#include <visualization_msgs/Marker.h>
int main( int argc, char** argv )
{
ros::init(argc, argv, "basic_shapes");
ros::NodeHandle n;
ros::Rate r(1);
ros::Publisher marker_pub = n.advertise<visualization_msgs::Marker>("visualization_marker", 1);
uint32_t shape = visualization_msgs::Marker::CUBE;
while (ros::ok())
{
visualization_msgs::Marker marker;
marker.header.frame_id = "/my_frame";
marker.header.stamp = ros::Time::now();
marker.ns = "basic_shapes";
marker.id = 0;
marker.type = shape;
marker.action = visualization_msgs::Marker::ADD;
marker.pose.position.x = 0;
marker.pose.position.y = 0;
marker.pose.position.z = 0;
marker.pose.orientation.x = 0.0;
marker.pose.orientation.y = 0.0;
marker.pose.orientation.z = 0.0;
marker.pose.orientation.w = 1.0;
marker.scale.x = 1.0;
marker.scale.y = 1.0;
marker.scale.z = 1.0;
marker.color.r = 0.0f;
marker.color.g = 1.0f;
marker.color.b = 0.0f;
marker.color.a = 1.0;
marker.lifetime = ros::Duration();
while (marker_pub.getNumSubscribers() < 1)
{
if (!ros::ok())
{
return 0;
}
ROS_WARN_ONCE("Please create a subscriber to the marker");
sleep(1);
}
marker_pub.publish(marker);
switch (shape)
{
case visualization_msgs::Marker::CUBE:
shape = visualization_msgs::Marker::SPHERE;
break;
case visualization_msgs::Marker::SPHERE:
shape = visualization_msgs::Marker::ARROW;
break;
case visualization_msgs::Marker::ARROW:
shape = visualization_msgs::Marker::CYLINDER;
break;
case visualization_msgs::Marker::CYLINDER:
shape = visualization_msgs::Marker::CUBE;
break;
}
r.sleep();
}
}
cd ~/catkin_ws
catkin_make
rosrun using_markers basic_shapes
rosrun rviz rviz
注意,在启动RVIZ之前,重新打开一个终端运行
roscore
运行RVIZ之后,如果报错“No tf data,Actual error,Fixed Frame [map] does not exit",另外开一个终端输入:
rosrun tf static_transform_publisher 0 0 0 0 0 1 map my_frame 10
|