机器狗实习学习日志(配置全在结尾)

2024-02-20 15:59

本文主要是介绍机器狗实习学习日志(配置全在结尾),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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)

这篇关于机器狗实习学习日志(配置全在结尾)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/728749

相关文章

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件