基于NIOSII软核的流水灯

一.硬件设计
新建项目


Tools->Qsys启动Qsys工具


file->save保存文件,名为kernel


双击clk_0,设置时钟

添加Nios II Processor


保持默认

重命名为cpu


添加JTAG UART

保持默认配置

添加On-Chip Memory(RAM or ROM)


更改Total memory size为40960

添加PIO接口


保持默认设置

添加System ID Peripheral


保持默认设置

接线及基地址分配如下


指定NIOS II的复位和异常地址


生成Qsys系统(菜单栏中Generation->Generate)


Quartus建立原理图文件


Assignments->Setting添加.qip文件


原理图如下(注意output需要连接粗线)


芯片引脚选择(Assignments->Device)


编译成功


分配物理引脚


二.软件设计
Tools->Nios II Software Build Tools for Eclipse打开Eclipse


选择workplace


file–>new–>Nios II Application and BSP from Template建立新的软件应用


代码如下
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
const alt_u8
led_data[8]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
int main (void) {
    int count=0;
    alt_u8 led;
    volatile int i;
    while (1)
    {
        printf("Hello world!\n");
        if (count==7)
        {count=0;}
        else
        {count++;}
        led=led_data[count];
        IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
        i = 0;
        while (i<500000)
            i++;
    }
    return 0;
}


编译后得到结果如下

三.在ROS下,下载编译orbslam2代码,并在kitti数据集的一个序列图像中进行实验

在ROS(Robot Operating System)环境下使用ORB-SLAM2进行SLAM(Simultaneous Localization and Mapping)实验,并在KITTI数据集上运行,涉及多个步骤,包括环境配置、代码下载、编译、以及数据集的准备和测试。以下是一个详细的步骤指南:

1. 环境准备

首先,确保你的计算机上安装了ROS(推荐使用ROS Melodic或Noetic,因为这些版本被广泛支持)。同时,安装编译ORB-SLAM2所需的依赖项,如CMake、OpenCV、Pangolin(用于可视化)、Eigen(线性代数库)等。

安装ROS(以Ubuntu 18.04和ROS Melodic为例)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) 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-melodic-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python-rosdep
sudo rosdep install --from-paths src --ignore-src -r -y
安装其他依赖
sudo apt-get install libopencv-dev
sudo apt-get install libpangolin-dev
sudo apt-get install libeigen3-dev

2. 下载ORB-SLAM2

从GitHub下载ORB-SLAM2的源代码:

git clone https://github.com/raulmur/ORB_SLAM2.git
cd ORB_SLAM2

3. 编译ORB-SLAM2

在ORB_SLAM2目录下,创建一个build文件夹并编译项目:

mkdir build
cd build
cmake ..
make -j4

4. 准备KITTI数据集

下载KITTI数据集,通常你会需要下载包含图像和对应位姿信息的部分。对于SLAM测试,你可以从KITTI Vision Benchmark Suite中选择合适的序列(如00-08序列)。

5. 修改ORB-SLAM2以适配KITTI数据集

ORB-SLAM2默认不支持KITTI数据集格式,因此你需要修改代码以读取KITTI的位姿文件(通常是.txt格式),并在ROS中发布这些数据。这通常涉及到修改Examples/ROS/ORB_SLAM2/src/ros_mono_orb_slam2.cc或其他相关文件,以读取KITTI的特定格式。

6. 在ROS中运行ORB-SLAM2

一旦修改好代码并编译成功,你可以通过ROS运行ORB-SLAM2,并通过ROS的节点发布和订阅功能与其他ROS节点交互。

7. 测试和验证

运行ORB-SLAM2节点,并使用ROS的工具(如rqt_image_viewrviz)来查看SLAM的结果。比较ORB-SLAM2生成的轨迹与KITTI提供的真实轨迹,以评估性能。

注意事项

  • 确保你理解ORB-SLAM2的代码结构和ROS的节点通信机制。
  • 在处理KITTI数据集时,注意数据的时间戳和同步问题。
  • 如果需要实时性能评估,考虑使用ROS的实时性能分析工具。

以上步骤应该能帮助你在ROS环境下使用ORB-SLAM2在KITTI数据集上进行实验。不过,由于ORB-SLAM2和ROS的集成相对复杂,具体实现细节可能需要根据你的具体需求进行调整。

四.总结
本次实验参考指导书及学长学姐博客总体没有太大的问题,对于理论知识更加了解,遇到的问题主要为原理图处output需要用粗线,不然会编译错误。以及命名的问题,这次需要命名对应的地方不多,但是仍需注意。

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值