LIFE LOG(ここにはあなたのブログ名)

あつあつ備忘録

ソフトやハード、時にはメカの備忘録をまとめていきます

【Ubuntu16.04】ROS環境構築

f:id:AtsuyaKoike:20190421152613p:plain
画像元

以下にROSの環境構築のコマンドを記述します。

$ sudo apt install git
$ git clone https://github.com/ryuichiueda/ros_setup_scripts_Ubuntu16.04_desktop
$ cd ros_setup_scripts_Ubuntu16.04_desktop/
$ ./step0.bash 
$ ./step1.bash 
$ source ~/.bashrc
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ source ~/.bashrc
$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

最後、rebootしないと以下のコマンドを正常に実行できません。

$ reboot

$ roscore と打って以下のように表示されたら環境構築は終了です。

$ roscore
... logging to /home/atsuya/.ros/log/54354e3e-641d-11e9-98f5-08002716ba6e/roslaunch-atsuya-VirtualBox-1915.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://localhost:41625/
ros_comm version 1.12.14


SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.14

NODES

auto-starting new master
process[master]: started with pid [1926]
ROS_MASTER_URI=http://localhost:11311/

setting /run_id to 54354e3e-641d-11e9-98f5-08002716ba6e
process[rosout-1]: started with pid [1939]
started core service [/rosout]

ROSの用語


画像元

Node

1つのプロセス名

Message

通信で受け渡されるデータの型

Master

Node同士が通信するためのプロセス
$ roscore で起動

Topic

Nodeが送受信するデータ
非同期通信

Service

Nodeが送受信するデータ
同期通信

Parameter

ROSを使うと様々なロボットに同じプログラムを使用できる
その時のロボットのパラメータ



参考
小倉崇: "rosではじめるロボットプログラミング", 工学社

「Mercari CES 2019 報告会」自分のツイートまとめ

f:id:AtsuyaKoike:20190122163539j:plain

mercariR4Dの方がまとめたツイートはこちら
connpass.com






































#CES2019 ツイートまとめ

f:id:AtsuyaKoike:20190109171448p:plain

CESはコンシューマテクノロジーのビジネスを懸命に取り込む世界中の人々が集まる場所です。この50年間、次世代のイノベーションが市場にどんどん導入されるこの国際舞台では、CESはイノベーターと技術革新の現場として、重要な役割を果たしてきました。
最大の実際に体験できるに体験できるイベントとしてはCESでは、業界業界のすべてを網羅しています。Consumer Technology Association(CTA)™が所有、企画するこのイベントは、世界中のビジネスリーダーや先駆的な思考の持ち主などが一堂に会します。CES 2019には、世界中から55,000人以上の参加が見込まれています。提供されるサービスについての詳細をご覧になり、CESでの体験を最大限に活かしてください。

www.ces.tech

2019年の1月8日~11日の間にラスベガスで行われている見本市「CES2019」で非常に興味深いものがたくさん展示されているため、興味を持ったツイートをまとめていきたいと思います。










↑これは実際にはプロジェクションマッピングではなく、LEDが光っているそうです。↑





]

【Unity・C#】DLLでコードの再利用

f:id:AtsuyaKoike:20181228152101p:plain

Visual Stduioで.NET frameworkを選択しプロジェクトを作成する

ファイル名:Class.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary1
{
    public class Class1
    {
        public static string Message {
            get {
                return "Stand by Ready!";
            }
        }
    }
}

というプログラムを書いておく。

Unityで
Assets>Create>C# Script
を選択し、

ファイル名:NewBehaviourScript1.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ClassLibrary1;

public class NewBehaviourScript1 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(Class1.Message);  
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

とする。

using ClassLibrary1;

でnameplaseを、

Debug.Log(Class1.Message);  

でClass1クラスとMessageプロパティを指定。

AssetsにClass.csをドラッグ&ドロップして、Main CameraにNewBehaviourScript1.csをドラッグ&ドロップして再生するとConsole画面に出力される。

Unityに依存しないプログラムをUnity側から呼び出せていることが確認できる。

【C/C++第4回】LEDチカ・PWM

今日はタイトルの通り、LチカとPWM点灯とダイナミックをしたいと思います。


f:id:AtsuyaKoike:20181221155903p:plain
引用元:https://os.mbed.com/platforms/ST-Nucleo-F303K8/

マイコンを使う際に、基板にはんだ付けされているピンヘッダ(以下ピン)を使用しているわけですがそれぞれがどういう役割を持っているのかを把握してから使用しなければなりません。
Nucleoの場合は親切なことに簡潔に書かれているものが用意されているので、最初はそれを見て判断していけば問題ないと思います。


ポートの設定方法

DigitalOut myled(指定したポート);

このように設定すると、指定したポートがデジタル出力ポートになります。

DigitalOut デジタル出力
DigitalIn デジタル入力
AnalogIn アナログ入力
PwmOut PWM出力

最初はこれらを使えるようになっていれば問題ないと思います。(他にもいろいろあります)

では実際にLチカからやってみましょう。

#include "mbed.h"

DigitalOut myled(PB_4);

int main() {
    while(1) {
        myled = 1;
        wait(0.1); // 100 ms
        myled = 0;
        wait(1.0); // 1 sec
    }
}

これでPB_4がデジタル出力のポートになり、LEDが点滅するようになります。
wait関数の中は秒単位での設定になりますが、浮動小数点の入力もできるようになっています。

PWM点灯をします。
PWMはPulse Width Modulationの略で、周期とデューティ比の指定により抵抗や半導体にかける電圧を調整する方法です。
ただ、今回は特に周期などは指定していません。後日サーボモータを動かしたいと思うので、その時に改めて説明します。

#include "mbed.h"

PwmOut led(PB_4);

int main() {
    while(1) {
        for(float i = 0.0f; i < 1.0f; i += 0.1f) {
            led = i;
            wait(0.1);
        }
    }
}

これで徐々にLEDの明るさが変化します。Digital OutがPwmOutになっているため、コンストラクタへの指定が違うことに注意してください。