kumitatepazuru's blog

中学生のメモブログ。みんなの役に立ちたい。

libscipsのプログラムレベルのお話(α0.0.2) 〜バグ修正の巻〜

f:id:kumitatepazuru:20200621110828p:plain

エラーが出たため修正。

問題発生

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/home/hogehoge/.pyenv/versions/3.6.4/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/home/hogehoge/.pyenv/versions/3.6.4/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "main.py", line 88, in train
    n_state, reward, end_action = env.step(a)
  File "/home/hogehoge/PycharmProjects/soccerai/env_data.py", line 146, in step
    rec_raw = self.recieve_msg()
  File "/home/hogehoge/PycharmProjects/soccerai/libscips/signal.py", line 83, in recieve_msg
    replace('""', '"')), address
  File "/home/hogehoge/.pyenv/versions/3.6.4/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/home/hogehoge/.pyenv/versions/3.6.4/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/home/hogehoge/.pyenv/versions/3.6.4/lib/python3.6/json/decoder.py", line 355, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 32 (char 31)

えっと、agent2dと一緒にやるまで前は問題なかったからagent2dの何かが悪さしているな。

調べる。

調べてみたら、agent2dが変なhearメッセージを出してる。markdown的にコピペがすごい大変だからやらないけど記号だらけ。 agent2dがこれは悪い。

こうした。

            try:
                return json.loads(msg[:-1].decode("utf-8").replace("  ", " ").replace("(", "['").replace(")", "']").
                           replace(" ", "','").replace("'[", "[").replace("]'", "]").replace("][", "],[").
                           replace("''", "'")), address
            except json.decoder.JSONDecodeError:
                return ["error","A message that libscips cannot parse. Special characters (parentheses, "
                                "double quotes, single quotes, etc.)\nA problematic message:"+msg[:-1].decode("utf-8")]

エラーが出たら、jsonの囲み方をダブルクォートからシングルクォートに変更してそれでもダメなら扱えないメッセージを出すということにした。 でも、あまりいい方法ではない気がする。後々修正予定。 α0.0.2の変更箇所はこれだけ。

最後に

ちょっといろいろ考えなくては。


個人的な質問等はこちらまで。

https://forms.gle/V6NRhoTooFw15hJdA

また、自分が参加しているRobocup soccer シミュレーションリーグのチームでは参加者募集中です!活動の見学、活動に参加したい方、ご連絡お待ちしております!

詳しくはこちら

kumitatepazuru.github.io