1、为什么需要学习Linux?
Linux 无处不在
每当你使用 Google、Facebook 或任何其他大型互联网网站时,你都在与运行 Linux 的服务器进行通信。大多数 DVR、飞机和汽车娱乐系统,甚至智能电视都是运行 Linux 的。此外,如果你使用的是安卓手机,你也在使用 Linux。事实上,在全球 500 台速度最快的超级计算机中,有 498 台使用了 Linux。
多功能性
Linux 遵循 GNU GPL 许可证,这意味着只要遵守许可证条款,几乎可以在你开发的任何产品或服务上自由使用。此外,Linux 的开发是以社区为基础的。这意味着你可以与其他 Linux 开发人员合作,分享知识和学习经验。
安全
Linux 是最安全的操作系统之一。从设备/文件到程序、访问机制和安全信息传递,你能想到的都有。
2、什么是Bash脚本?
Bash
脚本是 Linux 开发人员非常有用和常用的工具。基本上,它是用于创建 Linux 程序的工具。下面我们来看一下几个机器人中Bash脚本的应用列子。
这被称为 Shell 的提示符。它包含一些基本信息,如当前用户(本例中为 user
)或当前路径。你还会看到它有一个白色块在闪烁。这意味着 Shell 处于活动状态,等待接收您的指令!
先快速解释一下它是如何工作的。在这种情况下,我们要执行的bash
脚本期待一个参数。然后,脚本将评估收到的参数,并做一件或另一件事。对于本例子中的Bash,我们可以可以发送 3 个不同的参数:
forward
:这将使 BB8 机器人向前移动。
rotate
:这将使 BB8 机器人以自己为轴旋转。
stop
:这会让 BB8 机器人停止任何动作。
通过以下方式执行bash
脚本。
./demo.sh rotate
执行上述命令后,您将在 Shell 上看到以下输出:
user:/home/simulations/public_sim_ws/src/all/ros_basics_examples/linux_demo$ ./demo.sh forward publishing and latching message. Press ctrl-C to terminate
此外,还会看到 BB-8 机器人是如何开始旋转的:
我们已经运行了bash
脚本,它正在让 BB8 机器人旋转。但现在......如何停止它呢?其实很简单。你只需点击 Ctrl + C
同时点击键盘上的但是......这一点非常重要!为了能够发送 Ctrl + C
信号来停止bash
脚本,您需要将焦点放在脚本正在运行的 Shell 上。
停止程序后,就可以重新在 Shell 中输入了。但是,尽管停止了脚本,机器人仍在继续旋转。这是因为在这种情况下,机器人会继续执行最后收到的命令(即旋转)。因此,为了停止机器人的运动,您必须再次执行脚本,这次使用不同的参数
./demo.sh stop./demo.sh forward
现在,BB8 机器人将先停止然后向前行进。记住,它会一直向前走,直到你让它停下来。使用不同的参数执行bash
脚本,看看 BB8 机器人是如何根据发送的参数做出相应动作的。
我们来具体看看这个demo.sh
#!/bin/bash
ARG1=$1
function help(){
echo "Please enter one of the following: forward, rotate, stop"
echo
echo "Example: ./demo.sh rotate"
exit 1
}if [ "$ARG1" == 'forward' ]; then
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: -0.1
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0"elif [ "$ARG1" == 'rotate' ]; then
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.2"elif [ "$ARG1" == 'stop' ]; then
rostopic pub /cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0y: 0.0
z: 0.0"
else
echo "Oh, you didn't type the correct argument"
help
fi