本文主要是介绍机器狗实习学习日志(配置全在结尾),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
11/15/2023
开始接触虚拟机,开始确定以VMware为虚拟环境
11/16~11/18
结果:Hyper-V被关没法开回去,导致游戏打不了 ,放弃使用VMware T^T
本人系统Win11,此期间使用VMware因为该环境需要关闭windows的device guard(设备保护)的功能,因此去网上搜索相关信息,当时看到一篇知乎文章
解决VM 与 Device/Credential Guard 不兼容(全网有效解决思路) - 知乎 (zhihu.com)
使用他的脚本之后,只是把我的Hyper-V关了,device guard也因为安全中心不能用管理员权限打开,导致内存虚拟化打不开,后续在网上也没查到相关的方法,也许是版本不适用(Win10应该是能用的),后续就放弃使用VMware了
11/18晚
尝试换了个虚拟环境virtual box,并成功创建虚拟机,开始正常使用Ubuntu
11/19下午
结果:解决terminal打不开的问题
尝试使用Ubuntu的时候发现terminal(终端)打不开,并且日历出现乱码,图中是已经解决了
解决方案为更改语言为安装时的语言,此处我安装时用的中文,因此更改后未出现乱码,且终端能正常使用,方法如下:
- 打开设置(或者在应用里找):
- 更改语言为安装语言:
11/21晚
总结:开始步入Ros大门
在CSDN找资料时,找到一位叫古月居的up,准备以此为大门,探索Ros背后的真相(雾)
已了解:
Ros是什么
是一种机器人通用的标准,方便在不同的设备上学习,编译
参考链接:
【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程
11/22下午
总结:解决了user不在sudoers里面的问题,安装g++和python的编译器
今日想下载g++和python的编译器时,出现user无sudo权限的情况,如下图:
解决方案:
1. 输入su,切换到root模式
su
2. 输入密码
3. 输入sudo adduser 用户名(username) sudo,这样就可以给你的用户加上sudo权限了
sudo adduser username sudo
4. 输入su 用户名(username),回到自己用户,接下来就可以继续使用了
su username
解决方案参考链接:http://t.csdnimg.cn/Kg2KF
11/24晚
总结:尝试下载Ros,因官网和实验室提供的网站提供的指令一直存在问题,最终选择了一键安装
尝试下载的两个版本:
其一是 根据这个网站1.2.5 测试 ROS · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
其二是 根据官方wiki
melodic/Installation/Ubuntu - ROS Wiki
但都遇到一个问题,配置环境变量时出现配置环境变量的指令一直提醒环境变量的文件夹不存在,我认为是映像有问题,因此再下载新版本再次实行时,检测是否有问题。
11/25
总结:更换至Ubuntu20来进行学习,并使用博主fishros分享的一键安装脚本,大大简化安装Ros的步骤
根据昨日的下载方法,总会遇到一些包找不到的问题,所以后续决定使用fishros的一键安装功能,连接直接在搜索引擎里面就可以搜到下面贴上:
鱼香ROS机器人 (fishros.com)
问题:
本来也想试试在Ubuntu22上面也试着下载Ros1,但是在fishros上面也找不到,就暂时搁置了
11/27
总结:成功用ros内置的命令实现了用c++和Python的文件在屏幕上打出”hello world!“
今日唯一坑点:朱给的教程里面,文件名真的就只是文件名,没有后缀!!!
11/28
总结:学会了Ros的基本概念
11/29
总结:学会了创建节点(Node),创建Ros功能包
11/30
总结:学会使用c++写指令的结构,明日尝试复现写python的写法
1. 引入ros的库
#include <ros/ros.h>
2. 初始化节点
3. 向Ros Master提交节点信息,包括话题名字,要提交的数据类型
4. 创建要发布的信息
5. 设置延时运行频率,使其能够持续运行
12/18
总结:复习,回顾订阅者(subscriber)接收消息流程,学习发布者(publisher)发布消息过程,自定义发布话题数据
发布者发布消息:
1. 初始化节点,创建句柄(用于节点与Ros Master通信,传输信息)
2. 创建发布者名字,发布消息类型,内容
3. 设置传输频率
4. 设置延时休眠
订阅者接收信息:
1. 初始化节点,创建句柄
2. 设置订阅内容
3. 接受信息后,进入回调函数,等待处理(一般会设置死循环来等待信息输入)
自定义发布类型信息:
1. 创建 .msg 文件
2. 在package.xml中添加编译和应用依赖项
3. 在CMakeList.text中添加动态获取信息依赖项,其他与正常的相同
4. 编译一次
12/19
总结:client的代码写法
1. 初始化Ros节点,创建句柄
2. 确定服务端
3. 发布服务信息(service)
4. 回调函数直到找到服务端
编译项和topic的一致
12/20
总结:Server代码写法
1. 初始化Ros节点,创建句柄
2. 启动一个服务端,等待命令输入
3. 回调函数死循环等待命令输入
Client和Server的关系
Server建立一个服务端,等待Client输入命令,作用后对Client答复,发送的为service类型数据
12/21 ~ 12/22
总结:了解了宇树的情况,再次的项目的目的,自认Ros了解的差不多,停止学习Ros
宇树的地位:
国内顶尖的四足机器人,虽然四足机器人的地位很微妙,且本为同行的国外企业波士顿动力,也把重心偏向了带轮带履带的机器人,因此波士顿动力的狗已经停止发展,而宇树也只是数据上追上了几年前停止发展的波士顿动力。
实验目的:
实验室的狗大部分是Go1,应该有几台是edu的狗,有些不是。
项目目的是复现别人逆编译出来的SDK包,为了让不是edu的狗也能使用。
理论上狗的代码都是来源于一个库的,能减少再造轮子的精力,因此能够复现那个包具有很大的意义。
资料来源:知乎,宇树官网
12/23
总结:尝试看懂free_dog_sdk的包
那个文档的README其实也写得很详细了,但是需要实操,于是我打算第二天实操
12/24~12/25
总结:连接上出现了很大问题,狗的板不知道是不是被我搞坏了
24号时,我本来是想尝试使用无线的连接器连接狗的板卡,后来因为电压不够,显示屏一直不显示东西,第二天我才知道原因
25号晚,再次尝试连接,显示屏和各个设备是成功了,但是由于本人的破坏天赋,可能把狗的板卡搞坏了,原因是其不能正常开机关机,明天再看看吧
12/26~12/28
总结:尝试回顾连接机械狗的基本操作,因为不可预,及自身水平的因素而被迫都从无线转为有线
第一天:
尝试用无线发射器和接收器来连接狗和屏幕,结果失败,猜测是因为无线和一号狗不兼容
因为无线连在电脑上时,是可行的,下次换条狗实验一下理论上不存在操作不当的问题
第二天:
后知后觉发现问题后,换成线连,解决了问题,并且意识到屏幕电压不够的话,会有一定的闪烁现象。后续又希望使用scp工具来远程连接狗,尝试无线传输东西,后面因为找不到狗的网络,以为是网卡的问题,此日就此草草结束
第三天:
经学长提醒,狗有时会发癫,于是板卡的WiFi不显示,最后只好用U盘来省点事(最后它又有WiFi了),但是最后也因为希望能赶进度,就先跳过了
01/04
总结:看了free_dog_sdk的第一个ros包——example_position(lowlevel).py
该包的主要功能为启动狗,并且让狗向终端发送各个配件的信息,理论上应该有给各个狗发送指令的功能,但还没研究出来
借用了Tabnine Bata的ai检索,看代码的速度说实话快了不少
01/17~01/19
总结:好消息:py文件都看完了,是一些简单的动作,坏消息:好像还有cpp的样例(裂开)
py文件中的基本都是基本操作,底层的,直接控制电机,调整运动速度,扭矩,方向;
高层的,直接控制狗的运动方向,还有一些特别的动作。
包里面的只有走路,跳跃还有转弯三个基础动作。
案例的库内容大部分都是参考宇树公开文档的,就像作者初衷是复现宇树产品价格差很多却只是多了个不值这个价钱的功能,这样讲似乎他没有违法,毕竟来源都是官方公开的。
函数库内容:
common.py | 用于处理传输的数据,转换成二进制数据流 |
complex.py | 总的来说,这个库是用来检测,管理电池状态,电机初始动作,目标 动作的,输入依然依靠common.py的二进制数据流 |
enums.py | 参考宇树电机参数,确定每一种运动模式的值 |
highCmd.py | 里面只有一个函数highCmd(),用来编写highlevel参数的数据流, 貌似预留了加密,校验数据的功能没写 |
highState.py | 和lowState库一样功能,不过是用来解析高级数据的 |
lowCmd.py | 处理底层数据,转换成二进制数据流 |
lowState.py | 用于处理底层数据的,大概功能是解析和校验 |
unitreeConnection.py | 提供连接各个端口的函数的库 |
内容应该能一定地支持二次开发了,目前除了调控3个鱼眼摄像头,头部的LED灯,还有音箱外应该没有别的功能缺失了,明天有时间就可以继续完成实习项目了
02/02~02/03
总结:尝试启用库,发现需要网络来下载库,后来不会使用网卡,决定直接连接网线
使用free包所需的库需要特定版本的库,但是不知道为什么在同版本的Ubuntu的虚拟机里面,却安装不了,因此准备在狗上面接网卡来安装,因为不知道怎么使用网卡,唯一知道的是,狗根本没有识别到网卡,因此后续打算直接不借助网卡,直接连接网线来尝试一下,按道理来说,都是go1,Ubuntu的版本应该是一样的,目前只能寄希望于网线能用了……(拖拉的惩罚)
后续学习:基于Ubuntu系统的网卡使用,抓包,数据传输等
02/04
尝试过网卡配置,直接识别不到,后面认为是驱动(driver)的问题,但是这家网卡根本没有驱动可供下载,因此网卡尝试告退。
今天尝试连上网线,也没有成功,从某种角度上,我甚至不知道那个网线到底是不是连上了板卡,因为网线断了时候路由是用不了的。
后面尝试直接在GitHub上面下库来用,希望在回家前能让包动起来吧。
配置:诺基暗影骑士擎,window 11,VMwarePro(具体版本不了解),virtual box 7.0.10,Ubuntu 20.04.06(11/25更新前为Ubuntu 18.04.06)
这篇关于机器狗实习学习日志(配置全在结尾)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!